Java 错误:无法实例化活动组件信息。每次LOgCAT中出现此错误时,应用程序都会崩溃

Java 错误:无法实例化活动组件信息。每次LOgCAT中出现此错误时,应用程序都会崩溃,java,android,Java,Android,她的名字是MainActivity.java public class MainActivity extends AppCompatActivity implements View.OnClickListener{ FrameLayout cat1 = (FrameLayout) findViewById(R.id.cat1); @Override protected void onCreate(Bundle savedInstanceState) {

她的名字是MainActivity.java

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"?>


这是航海日志

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 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3133)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416)
                  at android.app.ActivityThread.access$1100(ActivityThread.java:230)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1822)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:7409)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
                  at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:116)
                  at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:147)
                  at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:27)
                  at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:53)
                  at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:29)
                  at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:203)
                  at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
                  at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:525)
                  at android.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 android.app.Instrumentation.newActivity(Instrumentation.java:1096)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3123)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416) 
                  at android.app.ActivityThread.access$1100(ActivityThread.java:230) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1822) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:148) 
                  at android.app.ActivityThread.main(ActivityThread.java:7409) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
E/AndroidRuntime:致命异常:主
流程:com.example.akkie.customize,PID:3969
java.lang.RuntimeException:无法实例化活动组件信息{com.example.akkie.customize/com.example.akkie.customize.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.Window$Callback android.view.Window.getCallback()”
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3133)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416)
在android.app.ActivityThread.access$1100(ActivityThread.java:230)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1822)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:7409)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.view.Window$Callback android.view.Window.getCallback()”
位于android.support.v7.app.AppCompateDelegateImplbase。(appCompateDelegateImplbase.java:116)
在android.support.v7.app.AppCompateDelegateImplv9。(AppCompateDelegateImplv9.java:147)
在android.support.v7.app.AppCompateDelegateImplv11。(AppCompateDelegateImplv11.java:27)
在android.support.v7.app.AppCompateDelegateImplv14。(AppCompateDelegateImplv14.java:53)
位于android.support.v7.app.AppCompateDelegateImplv23。(AppCompateDelegateImplv23.java:29)
在android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:203)中
在android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)上
位于android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:525)
位于android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:193)
位于com.example.akkie.customize.MainActivity(MainActivity.java:16)
位于java.lang.Class.newInstance(本机方法)
位于android.app.Instrumentation.newActivity(Instrumentation.java:1096)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3123)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3416)
在android.app.ActivityThread.access$1100(ActivityThread.java:230)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1822)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:7409)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
I/进程:发送信号。PID:3969信号:9 申请终止

我在stackoverflow中搜索了正确的答案,但没有一个与我的场景匹配。尝试了我能做的每一个解决方案和改变。请帮助。

移动:

FrameLayout cat1 = (FrameLayout) findViewById(R.id.cat1);
setContentView()
调用
onCreate()
之后。您无法找到尚不存在的内容。

移动:

FrameLayout cat1 = (FrameLayout) findViewById(R.id.cat1);

setContentView()
调用
onCreate()
之后。您无法找到尚不存在的内容。

问题在于,在调用
setContentView
之前,您正在调用
findViewById

findViewById
移动到
setContentView
之后的
onCreate
方法,如下所示

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    FrameLayout cat1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cat1 = (FrameLayout) findViewById(R.id.cat1);

    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) {

}

}

问题是,在调用
setContentView
之前,您正在调用
findViewById

findViewById
移动到
setContentView
之后的
onCreate
方法,如下所示

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    FrameLayout cat1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cat1 = (FrameLayout) findViewById(R.id.cat1);

    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) {

}

}

因此是NullPointerException因此是NullPointerException