首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应用程序在android中使用多屏幕时崩溃

应用程序在android中使用多屏幕时崩溃
EN

Stack Overflow用户
提问于 2021-12-19 16:48:33
回答 2查看 63关注 0票数 -3

我正试图在android中构建一个多屏幕应用程序,但不幸的是,它在运行过程中崩溃了。这个应用程序在主屏幕上运行得非常好,不会在MainActivity上崩溃,但当涉及到MainActivity2时,它就会崩溃。

这是我的MainActivity的Java代码:

代码语言:javascript
运行
复制
package com.example.scrollapp;

import androidx.appcompat.app.AppCompatActivity;    
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    EditText editText;
    public static final String EXTRA_NAME ="com.example.scrollapp.extra.NAME";    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText=findViewById(R.id.editTextTextPersonName3);
        String nametext = editText.getText().toString();    
    }
    public void openActivity(View v){
    Toast.makeText(MainActivity.this, "opening second activity", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(this,MainActivity2.class);
        editText=findViewById(R.id.editTextTextPersonName3);
        String nametext = editText.getText().toString();
        intent.putExtra(EXTRA_NAME,nametext);
        startActivity(intent);
    }        
}

这是MainActivity2的Java:

代码语言:javascript
运行
复制
package com.example.scrollapp;    

import androidx.appcompat.app.AppCompatActivity;    
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity2 extends AppCompatActivity {
    TextView textView;
    @SuppressLint("SetTextI18n")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        textView.findViewById(R.id.textView);
        Intent intent = getIntent();
        String name = intent.getStringExtra(MainActivity.EXTRA_NAME);
        textView.setText("your name is "+ name);
    }
}

如logcat中所示的错误:

代码语言:javascript
运行
复制
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.scrollapp, PID: 7978
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.scrollapp/com.example.scrollapp.MainActivity2}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.widget.TextView.findViewById(int)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.widget.TextView.findViewById(int)' on a null object reference
    at com.example.scrollapp.MainActivity2.onCreate(MainActivity2.java:18)
    at android.app.Activity.performCreate(Activity.java:5990)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5254) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
I/Process: Sending signal. PID: 7978 SIG: 9
EN

回答 2

Stack Overflow用户

发布于 2021-12-19 17:08:19

未初始化TextView类中的MainActivity2文本视图。在textView = findViewById(R.id.textView);类中使用textView.findViewById(R.id.textView);而不是textView.findViewById(R.id.textView);

票数 0
EN

Stack Overflow用户

发布于 2021-12-20 09:26:17

TextView的初始化不正确。初始化的正确方法是:

代码语言:javascript
运行
复制
textView = findViewById(R.id.textView);

必须在调用setcontentView方法之后实例化变量,因此必须在MainActivity2中执行以下操作

代码语言:javascript
运行
复制
public class MainActivity2 extends AppCompatActivity {
    TextView textView;
    @SuppressLint("SetTextI18n")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        textView = findViewById(R.id.textView);// Change made here in this line
        Intent intent = getIntent();
        String name = intent.getStringExtra(MainActivity.EXTRA_NAME);
        textView.setText("your name is "+ name)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70413448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档