Java Android Studio运行时错误-致命异常:main“;无法启动活动

Java Android Studio运行时错误-致命异常:main“;无法启动活动,java,android,android-intent,nullpointerexception,runtime,Java,Android,Android Intent,Nullpointerexception,Runtime,我的scrollview中有三个段落,每个段落都需要在三个按钮之一的onclick事件后变得可见 我目前已将它们设置为“全部不可见”。我尝试在oncreate方法中将它们设置为可见 但我得到了一个错误,我不理解,也无法理解。我的代码中没有红色标记来指定错误的来源 PassageActivity.java package com.example.threebutton; 导入androidx.appcompat.app.appcompat活动; 导入android.os.Bundle; 导入and

我的scrollview中有三个段落,每个段落都需要在三个按钮之一的onclick事件后变得可见

我目前已将它们设置为“全部不可见”。我尝试在oncreate方法中将它们设置为可见

但我得到了一个错误,我不理解,也无法理解。我的代码中没有红色标记来指定错误的来源

PassageActivity.java

package com.example.threebutton;
导入androidx.appcompat.app.appcompat活动;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.TextView;
公共类通行证活动扩展了应用程序通行证活动{
私有文本视图通道1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
passage1=findViewById(R.id.passage_1);
if(getIntent().hasExtra(“passageNum”)和&getIntent().getExtras().getInt(“passageNum”)==1){
passage1.setVisibility(View.VISIBLE);
}
setContentView(右布局、活动和通道);
}
}
MainActivity.java

package com.example.threebutton;
导入androidx.appcompat.app.appcompat活动;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.view;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void launchPassageOne(视图){
Intent Intent=新的Intent(这个,PassageActivity.class);
意图。putExtra(“passageNum”,1);
星触觉(意向);
}
public void launchpassagewo(视图){
Intent Intent=新的Intent(这个,PassageActivity.class);
星触觉(意向);
}
public void launchPassageThree(视图){
Intent Intent=新的Intent(这个,PassageActivity.class);
星触觉(意向);
}
}
XML文件


以及错误消息

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.threebuttons, PID: 5356
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.threebuttons/com.example.threebuttons.PassageActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setVisibility(int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setVisibility(int)' on a null object reference
        at com.example.threebuttons.PassageActivity.onCreate(PassageActivity.java:17)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

我需要这些段落在按下按钮后变得清晰可见。但是我得到了一个我无法理解的错误


我的代码是否没有正确实现?因为我在android studio中的代码上没有看到任何红色错误消息。

查看异常中的这一行:

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setVisibility(int)”

我们可以看到第1段是空的。这可能是因为它在XML中是EditText,但在java代码中是TextView


编辑:无需担心。将链接在中的问题视为重复…

在调用
findViewById()
之前,必须调用
setContentView()