2013-02-08 90 views
0

當我運行應用程序時,由於內存問題,活動被終止。當應用程序在後臺死亡時onActivityResult()

我在我的活動中調用startActivityForResult()方法來啓動相機。當調用活動在後臺被殺時,它顯示出不尋常的行爲。在進入onRestoreInstance()後,有意圖返回onActivityResult()並返回結果。但在其他情況下,在進入onRestoreInstance()後,它不會進入onActivityResult()。

請問任何人請解釋爲什麼會發生這種行爲。

+0

打印堆棧跟蹤,以便其他人可以瞭解您確切的問題。 – Maulik

回答

0

您可以使用此代碼運行新的活動

 Intent i = new Intent(this, DatabaseEditor.class); 
     //You may pass value on another activity 
     i.putExtra("xCoordinate", String.valueOf(o)); 
     i.putExtra("yCoordinate", String.valueOf(p)); 
     i.putExtra("scale", scaleTest); 

     startActivity(i); 

然後覆蓋onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == 1) { 

     if (resultCode == RESULT_OK) { 

      // Write your code on result ok return 
     } 
     if (resultCode == RESULT_CANCELED) { 
      // Write your code on no result return 
     } 
    } 
} 

在新的活動,你可以使用此代碼

Bundle b = getIntent().getExtras(); 
    if (b != null) { 
     editTextX.setText(String.valueOf(b.getString("xCoordinate"))); 
     editTextY.setText(String.valueOf(b.getString("yCoordinate"))); 
     editTextScale.setText(Float.toString(b.getFloat("scale"))); 
    } 

讓你傳遞的值如果你想回到以前的活動,只需調用finish();

//if you want to pass a value from this activity to you mainActivity use this 
      Intent returnIntent = new Intent(
     "com.example.activity.MainActivity"); 
      returnIntent.putExtra("id", streetID.intValue()); 
      setResult(RESULT_OK, returnIntent); 
      finish(); 

由於您設置了使用的setResult(RESULT_OK,returnIntent);那麼你的代碼爲

 if (resultCode == RESULT_OK) { 

      // Write your code on result ok return 
     } 

得到執行..乾杯! :D

+0

我打電話打算打開相機捕捉視頻。 –

+0

取決於您傳遞的結果....確保您在第二個intent終止之前傳遞一個值setResult(RESULT_OK,returnIntent); – dicenice

+0

這種情況是,調用者活動中沒有調用activityOnResult。 –

相關問題