通过Intent发送数据

时间:2014-05-10 12:41:59

标签: android-intent

我是Android开发的新手,我已经搜索并在此论坛中找到了解决方案,但遗憾的是我无法解决导致我的应用程序崩溃的问题。

我有两项活动,我希望从EidCard.java的用户那里获取意见并将其发送给EidCardFinal.java

EidCard.java的代码是

public class EidCard extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_eid_card);
    }

    public void onNextButtonClick(View view) {
         Intent intent = new Intent(this, EidCardFinal.class);
        Intent intent2 = new Intent(this, EidCardFinal.class);
        EditText editText1 = (EditText) findViewById(R.id.recipentData);
        EditText editText2 = (EditText) findViewById(R.id.senderData);
        String recipentmessage = editText1.getText().toString();
        String sendermessage = editText2.getText().toString();
        intent.putExtra("receiver", recipentmessage);
        intent2.putExtra("sender", sendermessage);
        startActivity(intent);
    }
}

来自EidCardFinal.java的代码

public class EidCardFinal extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * Intent intent = getIntent(); 
                 * Intent intent2 = getIntent(); 
         * String message1 = intent.getStringExtra("receiver"); 
         * String message2 = intent2.getStringExtra("sender"); 
         * TextView receiver = (TextView) findViewById(R.id.textView1); 
         * receiver.setText(message1); 
         * TextView sender = (TextView) findViewById(R.id.textView2);
         * sender.setText(message2);
         */
        setContentView(R.layout.activity_eid_card_final);

    }

}

问题是,当我包含现已注释掉的代码时,单击按钮时应用程序崩溃。请指导我做错了什么。

3 个答案:

答案 0 :(得分:0)

你只需要一个意图,PutExtra()函数可以被调用一次以上。完成后看起来像这样:

intent.putExtra("receiver", recipentmessage);
intent.putExtra("sender", sendermessage);

并在EidCardFinal中:

String message1 = intent.getStringExtra("receiver"); 
String message2 = intent.getStringExtra("sender");

这消除了对intent2的需求。

答案 1 :(得分:0)

在某种程度上,我看到有两个意图指向同一个目标类......并且你没有开始Intent2 ..如果你不需要删除intent2。

更改以下代码。

@Eidcard class

public void onNextButtonClick(View view) {
     Intent intent = new Intent(this, EidCardFinal.class);

    EditText editText1 = (EditText) findViewById(R.id.recipentData);
    EditText editText2 = (EditText) findViewById(R.id.senderData);
    String recipentmessage = editText1.getText().toString();
    String sendermessage = editText2.getText().toString();
    intent.putExtra("receiver", recipentmessage);
    intent.putExtra("sender", sendermessage);
    startActivity(intent);

和EidCardFinal一样

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_eid_card_final);

 /**
     * Intent intent = getIntent(); 

     * String message1 = intent.getStringExtra("receiver"); 
     * String message2 = intent.getStringExtra("sender"); 
     * TextView receiver = (TextView) findViewById(R.id.textView1); 
     * receiver.setText(message1); 
     * TextView sender = (TextView) findViewById(R.id.textView2);
     * sender.setText(message2);
     */

让我知道它是怎么回事。

答案 2 :(得分:0)

可疑,因为在EidCardFinal你正在使用

TextView receiver = (TextView) findViewById(R.id.textView1);  
TextView sender = (TextView) findViewById(R.id.textView2);

在设置contentview之前

 setContentView(R.layout.activity_eid_card_final);

所以你EidCardFinal

    public class EidCardFinal extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_eid_card_final);

      Intent intent = getIntent(); 
      Intent intent2 = getIntent(); 
      String message1 = intent.getStringExtra("receiver"); 
      String message2 = intent2.getStringExtra("sender"); 
      TextView receiver = (TextView) findViewById(R.id.textView1); 
      receiver.setText(message1); 
      TextView sender = (TextView) findViewById(R.id.textView2);
      sender.setText(message2);

}
}
相关问题