害怕成为那个已经问过问题的人......我已经查看了这个问题的各种解决方案,似乎没有解决我的问题。 我只想要一个按钮,我想开始一个地图活动。
以下是活动:
public void OnclickButtonListener() {
button_map = (Button)findViewById(R.id.button);
button_map.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mapintent = new Intent("mf.tutorial.MapsActivity");
startActivity(mapintent);
}
});
并在我的清单文件中处理意图:
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
返回的错误如下所示:
ActivityNotFoundException: No Activity found to handle Intent { act=mf.tutorial.MapsActivity }
任何帮助都非常感谢,因为它花了我很多年才能实现这一目标,这只是最新的绊脚石。我很乐意提供可能与解决方案相关的代码的任何其他部分!
非常感谢!
答案 0 :(得分:1)
我假设MapsActivity是你的apk中的一项活动?在这种情况下,您将使用Intent intent = new Intent(context, MapsActivity.class);
您使用的Intent版本用于运行具有针对特定操作的intent过滤器的活动。通常用于访问系统应用程序,如相机应用程序或拨号器。
答案 1 :(得分:1)
当您尝试启动Activity
时,请执行以下操作:
Intent mapintent = new Intent("mf.tutorial.MapsActivity");
这会创建一个Intent
,并将Intent
中的行动设置为"mf.tutorial.MapsActivity"
。
当您致电startActivity()
时,Android会尝试在已安装的应用中找到Activity
,知道如何处理行动"mf.tutorial.MapsActivity"
。没有,所以你得到ActivityNotFoundException
。
您要做的是通过显式COMPONENT启动Activity
,而不是通过隐式ACTION启动。这样做:
Intent mapintent = new Intent(context, MapsActivity.class);
startActivity(mapintent);
使用2参数构造函数可以显式设置COMPONENT(在本例中为MapsActivity
)。参数context
应该是对调用Activity
的引用。