0

私はばかげている.これは非常に明確ですが、私は私の問題を解決することはできません.それで私の質問を許してください.
私の問題は intenfilter についてです。これは私のマニフェスト ファイルのアプリケーション タグです。

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".AlakyTestActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="reza"
            android:name=".A2" >
            <intent-filter >
                <action android:name="MAIN" />

                <category android:name="LAUNCHER" />
            </intent-filter>
        </activity>
    </application>     

そして、これは私のボタンクリックリスナーです:

b1 = (Button)findViewById(R.id.button1);
        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent intent2 = new Intent();
                intent2.setAction("MAIN");
                intent2.addCategory("LAUNCHER");
                startActivity(intent2);
            }
        });      

すべてがうまくいっていると思いますが、コードを実行して をクリックするとb1、次のエラーが発生します。

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=MAIN cat=[LAUNCHER] }      

編集
これはA2です:

public class A2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        this.setContentView(R.layout.main2);
    }


}

私を助けてください。

4

4 に答える 4

0

2 番目のアクティビティの android:name を (パッケージ名).(クラス) に設定する必要があります。たとえば、2 番目のアクティビティ クラスが 'com.my.app.reza' であるとします。

    <activity
        android:label="@string/app_name"
        android:name=".reza" >
        <intent-filter >
            <action android:name="com.my.app.REZA" />
            <category android:name="android.intent.category.DEFUALT" />
        </intent-filter>
    </activity>

次のようにアクティビティを開始する必要があります。

Intent intent = new Intent("com.my.app.REZA");
startActivity(intent);

これは最善の方法ではないことに注意してください。パッケージ名をあまりいじらないでください。次の方法をお勧めします。

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

次のように開始します。

startActivity(new Intent( this.getContext() , reza.class );
于 2012-07-28T14:42:53.880 に答える
0

そのように使用してください:

Intent intent2 = new Intent(context,A2.class);
startActivity(intent2);

android:name=".A2""A2"、アクティビティ クラスを実装する必要があります。

に変更しandroid:name=".A2"ますandroid:name="A2"

于 2012-07-28T14:26:11.510 に答える
0
<intent-filter>
<action android:name="com.blacky.basictutorial.TutorialTwo" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

これを 2 番目のアクティビティで使用して、次のコードで呼び出してみてください。

startActivity(new Intent("com.blacky.basictutorial.TutorialTwo"));

これがうまくいくことを願っています。

于 2012-07-28T14:27:46.710 に答える
0

A2アプリ内で呼び出すだけの場合は、カテゴリを指定する必要はありません。そして、一意のアクション名を設定する必要があります。たとえば、ハッシュ文字列にすることができます:

...
Intent intent2 = new Intent("a202bfa923069ee8e119205e3468ee131ceafda37");
startActivity(intent2);

アクション名はパッケージ名と同じルールを使用することに注意してください。

于 2012-07-28T14:49:16.450 に答える