我做我的Android应用程序,但我有一个错误,我不知道如何解决它。 我的代码如下:
这是我的主要活动:
public class MainActivity extends Activity {
private ImageView imgHot;
public final static String EXTRA_MESSAGE="com.cuonglm.KhoHinh.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgHot=(ImageView)findViewById(R.id.imageViewHot);
imgHot.setOnClickListener(toContentHot);
}
View.OnClickListener toContentHot=new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent content=new Intent(MainActivity.this,ContentActivity.class);
String signal="1";
content.putExtra(EXTRA_MESSAGE,signal);
startActivity(content);
}
};
这是我的第二个活动:
public class ContentActivity extends Activity {
private TextView viewMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent content=getIntent();
String messageReceive=content.getStringExtra(MainActivity.EXTRA_MESSAGE);
viewMessage=(TextView)findViewById(R.id.content_receive);
viewMessage.setText(messageReceive);
setContentView(R.layout.activity_content);
}
我想点击主要活动上的图像,字符串“1”或数字“1”将通过意图发送到第二个活动并在TextView上查看。
但我的应用程序将接近“不幸......”
由于
答案 0 :(得分:4)
更改为
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content);
viewMessage=(TextView)findViewById(R.id.content_receive);
viewMessage.setText(messageReceive);
在ContentActivity
findViewById
查找当前有效的布局ID的视图。因此,您需要先将布局内容设置为活动,然后初始化视图。
你可能正在开始NullPointerException
因为你的初始化失败了。
答案 1 :(得分:3)
在尝试访问该setContentView()
中的任何Activity
之前,您需要在第二个Views
中致电layout
。将其更改为
public class ContentActivity extends Activity {
private TextView viewMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content);
Intent content=getIntent();
String messageReceive=content.getStringExtra(MainActivity.EXTRA_MESSAGE);
viewMessage=(TextView)findViewById(R.id.content_receive);
viewMessage.setText(messageReceive);
}
如果这不能解决您的问题,请发布您的logcat,以便我们看到错误。当应用程序崩溃时,也会在将来发布logcat。它们并不总是很容易看到。
另外,我不确定你是否了解putExtra()
的工作原理。它是一个key, value
对,因此当您将EXTRA_MESSAGE
作为key
时,那么您将使用它来检索第二个参数中添加的值。因此,如果Activity
被破坏但你看起来很奇怪,而且可能不安全或有效,你的方式可能会有效。我会把它改成像
content.putExtra("message",signal);
在您的第一个Activity
中,然后点击
String messageReceive = content.getStringExtra("message");
在您的第二个Activity
答案 2 :(得分:2)
在尝试引用与之关联的视图之前,您需要设置布局。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent content=getIntent();
String messageReceive=content.getStringExtra(MainActivity.EXTRA_MESSAGE);
setContentView(R.layout.activity_content);
viewMessage=(TextView)findViewById(R.id.content_receive);
viewMessage.setText(messageReceive);
}