1

我做了我的 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);
}

我想单击 Main Activity 上的图像,字符串“1”或数字“1”将通过 Intent 发送到第二个 Activity 并在 TextView 上查看。

但我的应用程序将关闭“不幸的是......”

谢谢

4

3 回答 3

4

改成

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content);
viewMessage=(TextView)findViewById(R.id.content_receive);
viewMessage.setText(messageReceive);    

在你的ContentActivity

findViewById查找具有当前错误布局的 id 的视图。因此,您需要先将布局的内容设置为活动,然后再初始化视图。

您可能会因为NullPointerException您的初始化失败而感到困惑。

于 2013-09-25T16:09:25.233 回答
3

在尝试访问其中的任何内容之前,setContentView()您需要先拨打电话。将其更改为ActivityViewslayout

   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_MESSAGEkeythen 时,您将使用它来检索第二个参数中添加的值。因此,如果损坏了,您的操作方式可能会起作用,Activity但对我来说看起来真的很奇怪,并且可能不是真正安全或有效的。我会把它改成类似

content.putExtra("message",signal);

在你的第一个Activity然后得到它

String messageReceive = content.getStringExtra("message");

在你的第二Activity

于 2013-09-25T16:09:31.837 回答
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);        

}
于 2013-09-25T16:10:00.417 回答