有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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中搜索了正确的答案,但没有一个与我的场景匹配。尝试了我能做的每一个解决方案和改变。请帮忙


共 (2) 个答案

  1. # 1 楼答案

    问题是您在调用setContentView之前调用了findViewById

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

    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) {
    
    }
    
    }
    
  2. # 2 楼答案

    移动:

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

    setContentView()调用onCreate()之后。你找不到还不存在的东西