我一直想弄清楚为什么突然我的特定活动的底栏导航按钮会导致崩溃。
在MainActivity上,我有以下底栏导航:
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
//mTextMessage.setText(R.string.title_home);
return true;
case R.id.navigation_events:
//mTextMessage.setText(R.string.title_events);
return true;
case R.id.navigation_offpeak:
//mTextMessage.setText(R.string.title_offpeak);
return true;
case R.id.navigation_deals:
Intent reservationsIntent = new Intent(MainActivity.this, DealsHomeActivity.class);
startActivity(reservationsIntent);
//mTextMessage.setText(R.string.title_bookings);
return true;
case R.id.navigation_me:
Intent memberProfileIntent = new Intent(MainActivity.this, MemberProfileActivity.class);
startActivity(memberProfileIntent);
//logout();
//mTextMessage.setText(R.string.title_me);
return true;
}
return false;
}
};
然后,我的活动被实例化,就像我的所有其他活动一样,如MemberProfileActivity.class。
然而,按下按钮以转到MemberProfileActivity.class可以在手机上按预期工作,但是当为DealsHomeActivity.class执行此操作时会导致以下logcat崩溃:
05-27 15:38:40.473 31978-31978 / asia.diningcity.android E / AndroidRuntime:FATAL EXCEPTION:main 流程:asia.diningcity.android,PID:31978 java.lang.RuntimeException:无法实例化活动ComponentInfo {asia.diningcity.android/asia.diningcity.android.activities.DealsHomeActivity}:java.lang.InstantiationException:java.lang.Class无法实例化 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2737) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2911) 在android.app.ActivityThread.-wrap11(未知来源:0) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1608) 在android.os.Handler.dispatchMessage(Handler.java:105) 在android.os.Looper.loop(Looper.java:164) 在android.app.ActivityThread.main(ActivityThread.java:6665) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:240) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781) 引起:java.lang.InstantiationException:java.lang.Class无法实例化 at java.lang.Class.newInstance(Native Method) 在android.app.Instrumentation.newActivity(Instrumentation.java:1174) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2727) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2911) 在android.app.ActivityThread.-wrap11(未知来源:0) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1608) 在android.os.Handler.dispatchMessage(Handler.java:105) 在android.os.Looper.loop(Looper.java:164) 在android.app.ActivityThread.main(ActivityThread.java:6665) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:240) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)
我一直在研究Java中的两个活动,看看onCreate方法是否有任何启动活动的差异,但没有。
所以我不明白这可能来自哪里。
请注意,之前这个工作正常,从那以后我没有触及菜单栏或者特卖活动,所以我不知道是什么导致了这个。
答案 0 :(得分:1)
我相信你的类是抽象类或私有类,抽象或私有类无法实例化,
抽象类根据定义是不可实例化的。
如果你的课是抽象的或私人的,我认为它是这样的
private abstract class DealsHomeActivity extends AppCompatActivity
更改为
public class DealsHomeActivity extends AppCompatActivity