Java getIntent返回null
在android中,当我尝试使用getIntent()时;方法,它返回null,这会导致应用程序崩溃。这是我的密码:Java getIntent返回null,java,android,Java,Android,在android中,当我尝试使用getIntent()时;方法,它返回null,这会导致应用程序崩溃。这是我的密码: public class MainActivity extends AppCompatActivity { public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE"; @Override protected void onCreate(Bundle sav
public class MainActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText textbox = (EditText) findViewById(R.id.edit_message);
String message = textbox.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message.toString());
startActivity(intent);
}
}
第一个活动调用第二个活动:
public class DisplayMessageActivity extends AppCompatActivity {
Intent intent = getIntent();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_mesage);
String message = "";
if (intent == null) {
Log.d("Intent", "Intent is null :(");
}
try {
message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
} catch (Exception e) {
Log.d("Message", "Message is null");
}
TextView textView = new TextView(this);
textView.setText(message);
textView.setTextSize(40);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
layout.addView(textView);
}
}
我不明白为什么它返回null,因为我自己使用一个意图调用它。。。不为空
编辑:我还尝试对键使用非常量的内容,例如“message”,而不是额外的消息,这会导致相同的结果。getIntent()方法必须在setContentView()方法之后调用。
public class DisplayMessageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_mesage);
Intent intent = getIntent();
String message = "";
if (intent == null) {
Log.d("Intent", "Intent is null :(");
}
try {
message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
} catch (Exception e) {
Log.d("Message", "Message is null");
}
TextView textView = new TextView(this);
textView.setText(message);
textView.setTextSize(40);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
layout.addView(textView);
}
}空值有两个原因。 1) 如果您没有在android中的manifest.xml文件中声明活动。 2) 必须在oncreate()方法中使用getIntent(),代码如下:-
public class DisplayMessageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_mesage);
Intent intent = getIntent();
String message = "";
if (intent == null) {
Log.d("Intent", "Intent is null :(");
}
try {
message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
} catch (Exception e) {
Log.d("Message", "Message is null");
}
TextView textView = new TextView(this);
textView.setText(message);
textView.setTextSize(40);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
layout.addView(textView);
}
}
移动
Intent-Intent=getIntent()代码>内部onCreate
Methodooh。。。谢谢这是我在C#习惯做的事,我不知道这在这里行不通。非常感谢。它在那里不起作用,因为任何像这样的方法之外的语句都发生在初始化时——当创建对象时,在调用构造函数之前。当时还没有将意图传递给对象。实际上,对于简单的值(如1,2,“hello”等),您应该只使用这样的初始值设定项,或者使用新的值来创建对象。您不应该调用函数。为什么必须在setContentView()之后调用getIntent()?哦,这样您就可以找到dViewById()!我很肯定你能在那之前得到目的。