android意图过滤器?
我觉得自己很愚蠢。这很清楚,但我无法解决我的问题。所以请原谅我的问题。android意图过滤器?,android,intentfilter,Android,Intentfilter,我觉得自己很愚蠢。这很清楚,但我无法解决我的问题。所以请原谅我的问题。 我的问题是关于intenfilter。这是我清单文件的应用程序标记: <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name"
我的问题是关于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
时,我得到了以下错误:
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);
}
}
请帮帮我。请像那样使用:
Intent intent2 = new Intent(context,A2.class);
startActivity(intent2);
Intent intent = new Intent("com.my.app.REZA");
startActivity(intent);
startActivity(new Intent( this.getContext() , reza.class );
android:name=“.A2”
,您必须有“A2”
活动类实现
修改为android:name=“.A2”
,而不是android:name=“A2”
希望这对您有用。您应该将第二个活动的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>
请注意,这并不是最好的方法,您不应该过多地使用包名。我建议您采用以下方法:
<activity
android:label="@string/app_name"
android:name=".reza" />
如果只需要在应用程序中调用
A2
,则无需指定类别。您应该设置唯一的操作名称,例如,它可以是哈希字符串:
...
Intent intent2 = new Intent("a202bfa923069ee8e119205e3468ee131ceafda37");
startActivity(intent2);
请注意,操作名称使用与包名称相同的规则。您没有名为
A2
的活动;正如在公共类A2扩展活动{
…我建议你先多读一点关于Android开发的知识,让自己感到舒服。在名称A2
前面加一个句号,就像这样…Android:name=“.A2”
。虽然您可以在自己的包intnet filter
中使用任何名称来输入您的操作和类别,但使用MAIN
和Launcher
有点让人困惑-请使用更能代表A2
活动的名称。@t0mm13b好的,谢谢我将A2
添加到我的问题。@Squonk谢谢,我在“A2”前面添加了
,但它不起作用。你还有其他想法吗?@StudentStudent:A2
活动与AlakyTestActivity
活动在同一个包中吗?我必须在我的项目中使用意图过滤器,而不是明确的意图。我必须在我的项目中使用意图过滤器,而不是明确的意图。
<activity
android:label="@string/app_name"
android:name=".reza" />
startActivity(new Intent( this.getContext() , reza.class );
...
Intent intent2 = new Intent("a202bfa923069ee8e119205e3468ee131ceafda37");
startActivity(intent2);