2012-07-21 78 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

相關問題