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());
}