java错误:无法实例化活动组件信息。每次LOgCAT中出现此错误时,应用程序都会崩溃
她是主要的活动。爪哇
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
FrameLayout cat1 = (FrameLayout) findViewById(R.id.cat1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cat1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this,Wallpapers.class);
startActivity(i);
}
});
}
@Override
public void onClick(View view) {
}
}
这是清单代码
<?xml version="1.0" encoding="utf-8"?>
<application
安卓:allowBackup="true"
安卓:icon="@mipmap/ic_launcher"
安卓:label="@string/app_name"
安卓:supportsRtl="true"
安卓:theme="@style/AppTheme">
<activity 安卓:name="com.example.akkie.customize.MainActivity">
<intent-filter>
<action 安卓:name="安卓.intent.action.MAIN" />
<category 安卓:name="安卓.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity 安卓:name="com.example.akkie.customize.Wallpapers">
</activity>
</application>
<supports-screens 安卓:largeScreens="true"
安卓:smallScreens="true"
安卓:normalScreens="true"
安卓:xlargeScreens="true"
安卓:compatibleWidthLimitDp="320"/>
这是航海日志
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.akkie.customize, PID: 3969
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.akkie.customize/com.example.akkie.customize.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method '安卓.view.Window$Callback 安卓.view.Window.getCallback()' on a null object reference
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:3133)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416)
at 安卓.app.ActivityThread.access$1100(ActivityThread.java:230)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1822)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:7409)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method '安卓.view.Window$Callback 安卓.view.Window.getCallback()' on a null object reference
at 安卓.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:116)
at 安卓.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:147)
at 安卓.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:27)
at 安卓.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:53)
at 安卓.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:29)
at 安卓.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:203)
at 安卓.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
at 安卓.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:525)
at 安卓.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:193)
at com.example.akkie.customize.MainActivity.<init>(MainActivity.java:16)
at java.lang.Class.newInstance(Native Method)
at 安卓.app.Instrumentation.newActivity(Instrumentation.java:1096)
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:3123)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416)
at 安卓.app.ActivityThread.access$1100(ActivityThread.java:230)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1822)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:7409)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
I/进程:发送信号。PID:3969信号:9 申请终止
我在stackoverflow中搜索了正确的答案,但没有一个与我的场景匹配。尝试了我能做的每一个解决方案和改变。请帮忙
# 1 楼答案
问题是您在调用
setContentView
之前调用了findViewById
如下所示,将
findViewById
移动到onCreate
之后的setContentView
方法# 2 楼答案
移动:
在
setContentView()
调用onCreate()
之后。你找不到还不存在的东西