簡體   English   中英

Android:不調用onActivityResult

[英]Android: onActivityResult is not called

我有一個活動,其視圖包含一個ListView,並且使用了適配器在ListView中顯示項目。

ReceptionistListToEditActivity.java

private ReceptionistListAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_receptionist_list_to_edit);
    ArrayList<ReceptionistViewModel> receptionists = getAllReceptionists();
    adapter = new ReceptionistListAdapter(ReceptionistListToEdit.this,android.R.layout.simple_list_item_1, receptionists);
    ListView receptionistListView = (ListView)findViewById(R.id.ReceptionistList);
    receptionistListView.setAdapter(adapter);
}

在適配器上,我單擊了ListView的每個項目上的編輯按鈕,打開了一個彈出窗口。

ReceptionistListAdapter.java:

public static int RECEPTIONIST_SAVED = 1;

private void openEditReceptionistPopup(long receptionistId) {
    Intent intent = new Intent(context, EditReceptionistPopup.class);
    new DataLoadingProgressDialog(context).showDialog();
    intent.putExtra("ReceptionistId", receptionistId);
    ((ReceptionistListToEditActivity)context).startActivityForResult(intent, RECEPTIONIST_SAVED);
}

在關閉彈出窗口時,我想發回一些我想要在適配器中使用的數據。

EditReceptionistPopup.java

Intent intent = new Intent();
intent.putExtra(someData);
setResult(RESULT_OK, intent);
finish();

但是,永遠不會調用活動類中的onActivityResult方法。

ReceptionistListToEditActivity.java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == adapter.RECEPTIONIST_SAVED) {
        ReceptionistViewModel viewModel = (ReceptionistViewModel) data.getSerializableExtra("receptionistDetails");
        adapter.onActivityResult(viewModel);
    }

}

我究竟做錯了什么?

確保尚未將清單下的launchMode singleTask添加到已實現onActivityResult()的活動中

編輯:

setResult(RESULT_OK, intent);

將您的openEditReceptionistPopup替換為下面的內容並嘗試

  • 在活動中公開上下文

  • 使用公共上下文調用startActivityForResult

      public static int RECEPTIONIST_SAVED = 1; private void openEditReceptionistPopup(long receptionistId) { Intent intent = new Intent(context, EditReceptionistPopup.class); new DataLoadingProgressDialog(context).showDialog(); intent.putExtra("ReceptionistId", receptionistId); context.startActivityForResult(intent, RECEPTIONIST_SAVED); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM