[英]Give Result to the same Activity
我有一個用來獲取文件夾路徑的活動。 要導航到下一個文件夾,我使用文件夾的路徑為此活動創建了一個意圖。 當我嘗試返回結果時,它會在中間丟失。
給出結果:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
Intent returnIntent = getIntent();
switch (item.getItemId())
{
case R.id.action_ok:
returnIntent.putExtra("path", filename);
Log.d("Result", "Picker"+String.valueOf(RESULT_OK));
setResult(Activity.RESULT_OK, returnIntent);
finish();
return true;
case R.id.action_abort:
setResult(RESULT_CANCELED, returnIntent);
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
導航(是的,這是一個ListActivity):
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
filename = (String) getListAdapter().getItem(position);
if (path.endsWith(File.separator))
{
filename = path + filename;
}
else
{
filename = path + File.separator + filename;
}
if (new File(filename).isDirectory())
{
Intent intent = new Intent(this, DirectoryPicker.class);
intent.putExtra("path", filename);
startActivityForResult(intent,0);
}
this.finish();
}
得到結果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (getIntent() != null)
{
Intent returnIntent = getIntent();
setResult(RESULT_OK, returnIntent);
finish();
}
super.onActivityResult(requestCode, resultCode, data);
}
當我嘗試返回結果時,它會在中間丟失。
它不會在中間丟失。 您在錯誤的位置尋找結果。 getIntent()
返回Activity
開始時的意圖。 它不知道您在其他Activity
設置的結果。 您必須使用onActivityResult
的第三個參數,即Intent data
。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
setResult(RESULT_OK, data);
finish();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.