点击即可关闭Android应用

时间:2013-09-25 16:07:06

标签: android android-activity

我做我的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上查看。

但我的应用程序将接近“不幸......”

由于

3 个答案:

答案 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);        

}