Java 将方向从横向更改为纵向时,应用程序崩溃

Java 将方向从横向更改为纵向时,应用程序崩溃,java,android,android-studio,Java,Android,Android Studio,错误 **2020-03-01 17:36:58.959 6589-6589/com.studenthelper.bscit E/AndroidRuntime:FATAL EXCEPTION:main 进程:com.studenthelper.bscit,PID:6589 java.lang.RuntimeException:无法启动activity ComponentInfo{com.studenthelper.bscit/com.studenthelper.bscit.MainActivit

错误 **2020-03-01 17:36:58.959 6589-6589/com.studenthelper.bscit E/AndroidRuntime:FATAL EXCEPTION:main 进程:com.studenthelper.bscit,PID:6589 java.lang.RuntimeException:无法启动activity ComponentInfo{com.studenthelper.bscit/com.studenthelper.bscit.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)' 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2914)上 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049)上 位于android.app.ActivityThread.HandlerElanchActivityInner(ActivityThread.java:4785) 位于android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4694) 在android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)上 位于android.os.Handler.dispatchMessage(Handler.java:106) 位于android.os.Looper.loop(Looper.java:193) 位于android.app.ActivityThread.main(ActivityThread.java:6692) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)” 位于com.studenthelper.bscit.MainActivity.onCreate(MainActivity.java:21) 位于android.app.Activity.performCreate(Activity.java:7140) 位于android.app.Activity.performCreate(Activity.java:7131) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2894)上 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049)上 位于android.app.ActivityThread.HandlerElanchActivityInner(ActivityThread.java:4785) 位于android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4694) 在android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)上 位于android.os.Handler.dispatchMessage(Handler.java:106) 位于android.os.Looper.loop(Looper.java:193) 位于android.app.ActivityThread.main(ActivityThread.java:6692) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)**


根据您的崩溃日志:

com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: 
java.lang.NullPointerException: Attempt to invoke virtual method 'void 
android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at 
com.studenthelper.bscit.MainActivity.onCreate(MainActivity.java:20) 
它表示您的文本视图

TextView textView=findViewById(R.id.logotext);
在布局R.layout.activity_main中找不到,这是由于尝试
textView.setText(Text)时出现的问题它实际上是null并且发生异常

所以,我建议你

  • 验证textVIewId在布局中是否相同?及
  • 设置
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏);
    
    setContentView(R.layout.activity_main)之前

  • 如果成功了,别忘了接受答案,这样其他人也可以从你的问题中受益。这不起作用,兄弟,但感谢你的建议实际上我已经做了两个布局,一个是横向布局,一个是横向布局,一个是纵向布局。我有文本视图,显示我的徽标,但在纵向模式下我没有文本视图。请help@abhishek如果两个版面中都有两个版面,那么它也应该有相同的文本视图
    TextView textView=findViewById(R.id.logotext);
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        TextView textView=findViewById(R.id.logotext);
        int unicode=0x1F4A1;
        String emoji=getEmoji(unicode);
        String Text="Bsc"+emoji+"T";
        textView.setText(Text);
    
    }