2012-05-01 26 views
1

我的情況有點特別,所以我會在這裏解釋。 我有2個活動,第一次有2個編輯和1個按鈕,第二個只有一個按鈕。 當按下活動1中的按鈕時,程序意圖將來自文本編輯的信息發送到活動2並將其顯示在活動2上。 在活動2上,按鈕僅返回到活動1並且我將其稱爲這樣在意圖活動之間傳遞數據

Button next = (Button) findViewById(R.id.button2); 

    Intent myIntent = getIntent(); 
    String nume = myIntent.getStringExtra("nume"); 
    String prenume = myIntent.getStringExtra("prenume"); 
    next.setText(nume + " " + prenume); 

    next.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent intent = new Intent(); 
      setResult(RESULT_OK, intent); 
      finish(); 
     } 

    }); 

我第一次在編輯中輸入信息時,它們在活動2中顯示爲ok,但在回到活動1並在活動2上編輯時輸入新值後,會顯示第一次輸入的值。

所以問題似乎是,每當我按下按鈕1以第二次嘗試開始傳遞到Activity 2時,意圖傳遞的編輯都不會更新。

+0

你需要證明,它設置活動1意圖數據的代碼。 – Timores

回答

6

導航從第一到第二:

Button next = (Button) findViewById(R.id.button2); 
next.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     Intent intent = new Intent(getApplicationContext(),Second.class); 
     intent.putExtra("Tag", "Value"); 
     startActivity(intent); 
     finish(); 
    } 

}); 

第二至第一:

Button previous= (Button) findViewById(R.id.button); 
previous.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     Intent intent = new Intent(getApplicationContext(),First.class); 
     startActivity(intent); 
    } 

}); 

上創建第二個活動:

Intent i = getIntent(); 
String val = i.getStringExtra("Tag"); 
6

這似乎是使用extras Bundle將是一個更好的主意。你像這樣實現它;

活性1

Intent pass = new Intent(ACTION_NAME); 
Bundle extras = new Bundle(); 
extras.putString("nume", NUME_VAL); 
extras.putString("prenume", PRENUME_VAL); 
pass.putExtras(extras); 
startActivity(pass); 

活性2

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bundle data = getIntent().getExtras(); 
    String nume = data.getStringExtra("nume"); 
    String prenume = data.getStringExtra("prenume"); 
}