2011-02-06 3 views
1

非常に簡単なカスタムインテントの例を作成しようとしています。私はこのエラーを検索しましたが、フォーラムのどれも私のために働く答えはありません。ここに私のファイルは、以下のとおりです。Android ActivityNotFoundException

public class DemoImplicit extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public void whenButtonIsClicked(View view) { 
     Intent intent = new Intent("com.example.action.NEW_ACTION"); //<<<<<<< 
     intent.addCategory("android.intent.category.DEFAULT");  //<<<<<<< 
//  Intent intent = new Intent("android.intent.action.VIEW"); 
//  intent.addCategory("com.example.MY_CATEGORY"); 
     startActivity(intent);          //<<<<<<< 
    } 
} 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.demos" android:versionCode="1" 
    android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".SatisfyIntent" android:label="@string/app_name"> 

      <intent-filter> 
      <!-- action android:name="android.intent.action.VIEW"/--> 
      <!-- category android:name="com.example.MY_CATEGORY"/--> 
      <action android:name="com.example.action.NEW_ACTION" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

    </application> 
    <uses-sdk android:minSdkVersion="9" /> 

</manifest> 

これら二つの別々のファイルが2つの異なるEclipseプロジェクトであるが、私はエミュレータにstartActivityコールを含むファイルをロードする前に、エミュレータ上にインテントフィルタを含むプロジェクトをロードするようにしてください。いずれにしても、私は常にActivityNotFoundExceptionを取得します。 私は何が間違っていますか?

P.S.ここでDemoImplicit.javaを含むプロジェクトのためのAndroidManifest.xmlファイルがあります:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.demos" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".DemoImplicit" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
    <uses-sdk android:minSdkVersion="9" /> 

</manifest> 

答えて

4

FisrtlyあなたのAndroidManifest.xmlファイルがこの中でDemoImplicit活動を定義しておく必要がありますことを確認してくださいshuld。このようなとして

<activity android:name=".DemoImplicit"/>

はまた、あなたのコードでは、ランチャーの活動としてSatisfyIntent

<activity android:name=".SatisfyIntent" android:label="@string/app_name">

をaspecifiedているしかし、あなたはあなたのJavaコードでは、このような何もないように、ここに思えます。

したがって、実行するActivityの内容は、AndroidManifest.xmlファイルに定義されている必要があります。

+0

私は既に2つのプロジェクトを持っているので、2つのAndroidManifest.xmlファイルがあります。私は両方を含むように質問を編集しました。 1つはランチャー活動を列挙する。もう片方はしません。だから私はそれが問題だとは思わない。 com.example.demos.MY_ACTIVITYとMY_NEW_ACTIVITYの値のように、識別子とその値の違いかもしれませんか? – hwexler2

+0

大丈夫、別のアクティビティのコードを投稿できますか? –

関連する問題