2012-07-21 77 views
-1

Android - 我正在使用意图在两个活动之间进行通信。我在调用活动中使用了putExtra(),并且在被调用的活动中使用了getExtras。但问题是iam无法使用我在意图中检索到的编号来设置编辑文本。下面是我的program`Android - 我正在使用意图在两个活动之间进行通信

//调用活动

package com.example.androidtutorial2; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.text.InputType; 

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //EDIT TEXT 
     final EditText sharedata = (EditText) findViewById (R.id.editText1) ; 
     sharedata.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED); 

     //BUTTON 
     Button sendbutton = (Button) findViewById (R.id.button2) ; 
     sendbutton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       int edittext_data =      Integer.valueOf(sharedata.getText().toString()); 

       Intent sendintent = new Intent(MainActivity.this,second_activity.class); 
       sendintent.putExtra("somedata", edittext_data); 
       startActivity(sendintent); 

      } 
     }); 

//  Button button_to_call_activity = (Button) findViewById(R.id.button1); 
//  button_to_call_activity.setOnClickListener(new OnClickListener() { 
//   
//   @Override 
//   public void onClick(View v) { 
//   
//    
//   } 
//  }); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 


} 


//CALLED ACTIVITY 



package com.example.androidtutorial2; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.text.InputType; 
import android.widget.EditText; 

public class second_activity extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 

     EditText displaymessage = (EditText) findViewById (R.id.editText1); 

     Intent intent1 = getIntent(); 
     Bundle bundle1 = intent1.getExtras(); 
     int integer1 = bundle1.getInt("somedata"); 

     Integer string1 = integer1; 

     displaymessage.setText(integer1);    // HERE IS A RUNTIME ERROR 


    } 
} 

回答

1

的首先,如果你使用的是Java 1.5及以上不使用Integer.valueOf()而是使用Integer.parseInt()

如:

int edittext_data = Integer.parseInt(sharedata.getText().toString());

2.你与输出问题是在这里。

不要做到这一点... Integer string1 = integer1;

使用它像这样...

String string1 = getIntent().getExtras().getString("somedata"); displaymessage.setText(string1);

3

使用

displaymessage.setText("" +integer1); 

或者

displaymessage.setText(String.valueOf(integer1)); 
+2

作出这样的'将String.valueOf(整数1)'。请参阅http://stackoverflow.com/a/7752401/675383 – nhaarman 2012-07-21 18:40:19

0

既然你似乎没有被做任何与变量一个整数,你也可以简单地把它保留为一个字符串。

sendintent.putExtra("somedata", sharedata.getText().toString()); 

String integer1 = bundle1.getString("somedata"); 
+0

另外,仅供参考,你得到一个错误把一个int放入setText()的原因是因为setText(int)是为了寻找一个int xml资源id 。所以,如果你真的想把它作为一个整数,做上面的imran说:setText(“”+ int); – leenephi 2012-07-21 19:22:58

相关问题