2012-01-05 8 views
1

アクティビティを起動しようとしたときに、私は罰金数百回を実行していたアプリを、持っているが、非常にまれに、私は例外を取得していない:私は宣言したマニフェストでランダムActivityNotFoundException意向起動

Intent tIntent = new Intent(); 
tIntent.setClass(App.ctx, MyClassActivity.class); 
startActivity(tIntent); 

activity android:name="MyClassActivity" android:launchMode="singleTask" 

例外:

01-01 10:41:33.723: E/AndroidRuntime(3867): android.content.ActivityNotFoundException: 
Unable to find explicit activity class {my.package/my.package.MyClassActivity}; 
have you declared this activity in your AndroidManifest.xml? 

これを引き起こしている可能性がどのような任意のヒント?例外は本当にランダムで稀です。エミュレータでアプリケーションが起動されます。

私はandroid.content.ActivityNotFoundException:の質問を読んだことがありますが、問題は体系的で、ここではランダムではありません。

答えて

0

のようにマニフェストファイルの両方にアクティビティを追加してください。これが当てはまらない場合は、明示してください、私は今この仮定に基づいて私の答えに基づいています...

アプリケーションがエミュレータまたはデバイスの開発環境またはデバッグ可能環境で実行されるときはいつでも、起こることはたくさんあります。その結果、ロード時間、インストール、アンインストールなどのスキューが発生する可能性があります。これは、既に起動しているデバイス(USB経由で接続されたデバイス、または開いたままにしておくエミュレータのデバイス開発)。 1.アプリケーションを再構築します(変更があった場合) 2.アプリケーションがデバイス上のアプリケーションと一致するかどうかを確認します。 3.アプリケーションをアンインストール/再インストールします。 4.アプリケーションを実行します。

このプロセスでは、処理が速すぎると、マニフェストファイルが誤って読み込まれ、実際にはビルドが「破損」する可能性があります。断続的にしか起こらなければ、それはちょうど1分間のぼるエミュレータです。問題が発生してから何か具体的なことが起こるまで続けられれば、開発環境は失われてしまいます。最初の問題については、あなたができることは何もできませんが、時にはあまりにも速くクリックしないでください... 2番目のプロジェクトでは、単にプロジェクトをクリーンにします(Eclipseでは「プロジェクト」 - >「クリーン」をクリックします)。これにより、キャッシュされた情報が取り除かれ、最初から構築されます。それはあなたのアプリケーションをすべて光沢があり新しいもののように動作させます。私が見つけたものは、デバイスから手作業でアプリをアンインストールするときに役立ちます。私は複数のライブラリを使用する複雑なアプリケーションやContentResolverがContentエラーのためにハングアップした場合にのみこれを行います。このことができます

希望、 FuzzicalLogic

+0

包括的な答えをありがとう。私はそれがエミュレータの不具合だと思っていますが、例外が発生したときに覚えている限り、非常にきれいな状態です(以前のものをクリックしている間に追加のビルドがエミュレータにアップロードされていないなど)。また、私は定期的に設定を消去する必要があるので、私は定期的にadbコマンドラインを使用してアプリケーションをアンインストールし、これは私のためにこれを行う最速の方法です。 – tmouse

+0

私はそれが本当にエミュレータの不具合だとは思わないが、adbそのものです。私はEclipseで開発し、これはデバイスとエミュレーションで私に起こります。それが起こると、私はadbをリセットして修正することにしましたが、adbが再起動しないことがあるため、上記の方が高速で信頼性が高いことがわかりました。 –

0

あなたは、私はあなたが頻繁に変更をデバッグしていると仮定するつもりです、エミュレータでプログラムを実行している場合、この

    <activity android:name=".MyClassActivity" 
       android:label="@string/app_name" 
       android:theme="@android:style/Theme.NoTitleBar" 
       android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="com.pkg.MyClassActivity"/> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
+0

これはマニフェストに追加することの理由は何ですか?私は好奇心が強いです。アプリが何百ものデバイスでうまく動作し、追加のフィルタがなくても問題ありません。あなたはここで試すことができます:[Android MarketのTM.Lazor](https://market.android.com/details?id=info.tmouse.tlazor)、自己宣伝にごめんね。 – tmouse

関連する問題