所以我的应用程序包含显示一些文本的第一个活动,在操作栏上有一个文件菜单,我在其中放置了我的位置选项。
我使用onOptionItemSelected在mainActivity中调用另一个活动,如下所示:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_photo:
openPhoto();
return true;
case R.id.action_video:
openVideo();
return true;
case R.id.action_map:
Intent intent = new Intent(this, GPSTracker.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
清单中的我声明第二个活动如下:
<activity
android:name="com.example.locateme.GPSTracker"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
并在GPSTracker.java中写道:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gpstracker);
}
还有我的代码来查找位置。
我正在运行应用程序,当我按My Location
选项时应用程序崩溃。
Here are the logcat errors after removing intent for GPS activity
full code of the app is here,以防可能有我错过的东西。 我是以错误的方式打电话给第二项活动吗?
答案 0 :(得分:1)
首先,在您的Manifest.xml中删除您的GPS活动的intent-filter,此处您已将两个活动(Main和GPS)设置为启动器。仅将一个活动设置为LAUNCHER和MAIN。然后很高兴看到LogCat输出知道它崩溃的原因
答案 1 :(得分:1)
java.lang.InstantiationException: can't instantiate class com.example.locateme.GPSTracker; no empty constructor
是非常明显的错误。
在GPSTracker课程的某个地方,你有一个像
这样的定义public GPSTracker(SomeClass referenceName) {
//...
}
应删除此代码块或将其替换为不带参数的构造函数。第一个选项如果首选:使用onCreate
作为构造函数。