2012-02-01 119 views
0

我剛開始使用Android開發,並遇到問題。我正在嘗試接下來的事情:如何在兩個活動之間傳遞字符串

我有一個Activity1,它有一個按鈕「0」。另外我有Activity2,它有一個TextView和一個OK按鈕。

當我按「0」,我想傳遞一些字符串到Activity2。

當我按0時,Activity2必須打開,並在其中TextView必須顯示我傳遞的字符串。按OK後(在Activity2中),我想回到Activity1。

我試圖做到這一點這樣:

活性1

case R.id.b0: 
    errorString = "Error: a number can't start with 0"; 
    Bundle basket = new Bundle(); 
    basket.putString("error", errorString); 
    Intent person = new Intent("my.firsttraining.app.vitali.ERRORPAGE"); 
    person.putExtras(basket); 
    startActivity(person); 

活性2

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    bOK= (Button)findViewById(R.id.bOKonError); 
    errorDisplay = (TextView)findViewById(R.id.tvError); 

    bOK.setOnClickListener(this); 
    setContentView(R.layout.errorpage); 

    Bundle gotBasket = getIntent().getExtras(); 
    String error = gotBasket.getString("error"); 
    errorDisplay.setText(error); `` 

我也試圖做這樣的事情:

活動1

case R.id.b0: 
    errorString = "Error: a number can't start with 0"; 
    basket = new Bundle(); 
    basket.putString("error", errorString); 
    person = new Intent("my.firsttraining.app.vitali.ERRORPAGE"); 
    person.putExtras(basket); 
    setResult(RESULT_OK, person); 
    finish(); 

活性2

bOK.setOnClickListener(this); 
    setContentView(R.layout.errorpage); 
} 

public void onClick(View v) 
{ 
    Intent in = new Intent("my.firsttraining.app.vitali.MENU"); 
    startActivity(in); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) 
    { 
     Bundle gotBasket= data.getExtras(); 
     String err = gotBasket.getString("error"); 
     errorDisplay.setText(err); 
    } 
} 

這一切後,我有一個錯誤。點擊按鈕0後,我的應用程序崩潰。我收到以下錯誤。

應用程序意外停止。請再試一次

和帶有「強制關閉」文本的按鈕。我不得不說,我不明白第二種選擇。我剛剛在一些教程中看到它。

+0

請發佈崩潰的logcat輸出。 – 2012-02-01 20:24:11

回答

1

在你的Activity2.java中編寫setContentView(R.layout.errorpage);super.onCreate(savedInstanceState);這樣可以查看intit然後你就可以得到按鈕的窗體視圖。

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     //Just write this line. You it will load view for 
     //activity and then you can get button from it 
     setContentView(R.layout.errorpage); 

     bOK= (Button)findViewById(R.id.bOKonError); 
     errorDisplay = (TextView)findViewById(R.id.tvError); 

     bOK.setOnClickListener(this);   

     Bundle gotBasket = getIntent().getExtras(); 
     String error = gotBasket.getString("error"); 
     errorDisplay.setText(error); 
+0

非常感謝,所以現在我明白代碼中的正確順序是什麼,這非常重要。 – 2012-02-02 11:06:29

相關問題