我想在其他活動中調用mainactivity
的方法。爲此,我研究了很多,發現使用OnActivityResult
是最佳選擇。任何人都可以請示例幫助下解釋如何使用這種方法?我經歷了類似的問題,但發現它們令人困惑。 謝謝!使用onactivityresult android
編輯:我有我的應用程序中的自定義對話框活動。它會詢問用戶是否要開始新遊戲,並且它有兩個按鈕「是」和「否」。我想實現上述方法只是爲了獲得按下的按鈕。
我想在其他活動中調用mainactivity
的方法。爲此,我研究了很多,發現使用OnActivityResult
是最佳選擇。任何人都可以請示例幫助下解釋如何使用這種方法?我經歷了類似的問題,但發現它們令人困惑。 謝謝!使用onactivityresult android
編輯:我有我的應用程序中的自定義對話框活動。它會詢問用戶是否要開始新遊戲,並且它有兩個按鈕「是」和「否」。我想實現上述方法只是爲了獲得按下的按鈕。
定義常量
public static final REQUEST_CODE = 1;
使用呼叫您的自定義對話框活動意圖
Intent intent = new Intent(Activity.this,
CustomDialogActivity.class);
startActivityForResult(intent , REQUEST_CODE);
現在使用onActivityResult檢索結果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
String requiredValue = data.getStringExtra("Key");
}
} catch (Exception ex) {
Toast.makeText(Activity.this, ex.toString(),
Toast.LENGTH_SHORT).show();
}
}
在定製對話活動中使用此代碼來設置導致
Intent intent = getIntent();
intent.putExtra("key", value);
setResult(RESULT_OK, intent);
finish();
感謝您的快速回復。我已經通過了developer.android.com的例子。但我發現它很混亂。你能否給我舉一個參考主要活動和其他活動的例子。我是一名初學者。 –
閱讀此內容---- http://learnandroideasily.blogspot.in/2013/03/starting-activity-for-result-in-android.html http://android-er.blogspot.in/2011/08 /return-result-to-onactivityresult.html – vinay
啓動活動:
你需要一個額外的整數參數傳遞給startActivityForResult()method.You可以做到這一點通過定義一個常量或簡單地放一個整數。integer參數是一個「請求代碼」,用於標識您的請求。當您收到結果Intent時,回調會提供相同的請求代碼,以便您的應用程序可以正確識別結果並確定如何處理結果。
static final int ASK_QUESTION_REQUEST = 1;
// Create an Intent to start SecondActivity
Intent askIntent = new Intent(FirstActivity.this, SecondActivity.class);
// Start SecondActivity with the request code
startActivityForResult(askIntent, ASK_QUESTION_REQUEST);
返回結果:
在完成第二個活動類的工作簡單地設置的結果,並呼籲該活動來自何方,最後不要忘了寫完成()語句後。
// Add the required data to be returned to the FirstActivity
sendIntent.putExtra(Result_DATA, "Your Data");
// Set the resultCode to Activity.RESULT_OK to
// indicate a success and attach the Intent
// which contains our result data
setResult(RESULT_OK, sendIntent);
// With finish() we close the SecondActivity to
// return to FirstActivity
finish();
接收結果:
當你與後續活動並返回完成後,系統會調用您的活動的onActivityResult()方法。此方法包含三個參數:
@您傳遞給startActivityForResult()的請求代碼。 @第二活動指定的結果代碼。如果操作成功,則爲RESULT_OK;如果操作失敗,則爲RESULT_CANCELED @An攜帶結果數據的Intent。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// check if the request code is same as what is passed here it is 1
if (requestCode == ASK_QUESTION_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
final String result = data.getStringExtra(SecondActivity.Result_DATA);
// Use the data - in this case display it in a Toast.
Toast.makeText(this, "Result: " + result, Toast.LENGTH_LONG).show();
}
}
}
欲瞭解更多詳細信息,請參閱該示範Getting a Result from An Activity
1.In您FirstActivity類寫入以下使用意圖遷移到第二個活動代碼。
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 100);
2.In您secondActivity類寫入以下爲onclick事件 代碼對於例如:在secondActivity如果要發回數據:
Intent intent= new Intent();
intent.putExtra("result",result);
setResult(RESULT_OK,intent);
finish();
3.Now在FirstActivity類寫入以下代碼用於onActivityResult()方法。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == 100 && resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
Log.e("Result",result);
}
}
我應該在自定義對話框中使用什麼? –
如果一切順利,我們將requestCode設置爲1,那麼RESULT_OK將爲1,因此在activityResult上我們可以檢查是否(requestCode == RESULT_OK)。 對於設置結果,我們在自定義對話框活動中使用了setResult。我們可以將上面提到的一些數據與鍵值對進行比較。 要獲取onActivityResult中的數據,請使用該密鑰名稱來檢索其值。 –