Java 将变量值传递给Android上的新活动时出错

Java 将变量值传递给Android上的新活动时出错,java,android,android-intent,Java,Android,Android Intent,错误: java.lang.RuntimeException:无法实例化activity ComponentInfo{com.example.vinicius.chatandroid/com.example.vinicius.chatandroid.Janela}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Intent.getStringExtrajava.lang.String

错误:


java.lang.RuntimeException:无法实例化activity ComponentInfo{com.example.vinicius.chatandroid/com.example.vinicius.chatandroid.Janela}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Intent.getStringExtrajava.lang.String”

代码:

新活动

public Janela() {
    Intent intent = getIntent();
    String ip = intent.getStringExtra("ip");
    int porta = intent.getIntExtra("porta",0);
    this.conexao = new Conexao(ip, porta);
    conexao.addObserver(this);
    escreve("Chat iniciado com " + conexao.getIp() + ":" + conexao.getPorta());
}
getIntent将在调用onCreate之前返回null,所以在构造函数中调用的代码中,intent将变为null,这将导致NPE

在活动中使用构造函数不是一个好主意,它有自己的生命周期,您应该遵循它

解决方案:


将方法public Janela{更改为类似public void MyJanela{的内容,并在onCreate内部调用它。

切勿在活动或片段的构造函数中执行任何操作,请尝试以下代码:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String ip = intent.getStringExtra("ip");
        int porta = intent.getIntExtra("porta",0);
        this.conexao = new Conexao(ip, porta);
        conexao.addObserver(this);
        escreve("Chat iniciado com " + conexao.getIp() + ":" + conexao.getPorta());
       }

java.lang.NullPointerException:试图调用虚拟方法“java.lang.String”,似乎您正在对空引用调用getString…。感谢您,我不认为错误在于我很高兴能提供帮助。@Rohit5k2 dat english tho:D显然不是您的
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String ip = intent.getStringExtra("ip");
        int porta = intent.getIntExtra("porta",0);
        this.conexao = new Conexao(ip, porta);
        conexao.addObserver(this);
        escreve("Chat iniciado com " + conexao.getIp() + ":" + conexao.getPorta());
       }