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

请这样使用:

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>

尝试在您的第二个活动中使用它并通过以下代码调用:

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

希望这对你有用。

于 2012-07-28T14:27:46.710 回答
0

您应该将第二个活动的 android:name 设置为(包名称)。(类)例如,假设第二个活动类是“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

A2如果您只需要在应用程序内部调用,则无需指定类别。你应该设置一个唯一的动作名称,例如它可以是一个哈希字符串:

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

请注意,操作名称使用与包名称相同的规则。

于 2012-07-28T14:49:16.450 回答