对Android来说还挺新鲜的。我有以下情况:
FragmentActivity
的一个实例传递给适配器。呼叫:
ExpandableListAdapter listAdapter新ExpandableListAdapter(mContext,mActivity,listDataHeader,listDataChild);执行情况:
public ExpandableListAdapter(Context context, FragmentActivity activity, List<String> listDataHeader, HashMap<String, List<String>> listChildData) {
this._context = context;
this._activity = activity;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
到现在为止一切都很顺利。所以我现在的问题是,当用户选择一个联系人时,我想得到结果。我在下面尝试过,但是从未调用过onActivityResult
重写方法。我不知道该怎么做,似乎其他人和我有不同的地方,他们的解决方案对我没有用。
有人知道我能做什么吗?
发布于 2017-01-10 04:22:42
我建议为此使用一个接口。例如,创建必须在活动中实现的接口ContactCallback
。创建适配器时,传递this
(这意味着接口)。当您单击适配器内的项调用时,传递的回调将类似于callback.onContactSelected()
。在活动中实现的onContactSelected()
内部,您可以打开对话框。
更新:
对于您的问题,您的onActivityResult()
从未被调用过:
您的清单中有一条名为"android:launchMode="singleTask"
的行吗?移除它,它应该被调用。下列情况可能导致接收结果出现问题:
startActivityForResult()
,不要使用startActivity()
。onBackPressed
方法中执行某些操作,则必须将super.onBackPressed();
定位在该方法的最后一行,而不是位于第一行。android:launchMode="singleInstance"
以创建意图。noHistory="true"
。setResult()
是否漏掉了。finish()
来关闭该活动。使用finishActivity()
关闭被调用的活动。发布于 2017-01-10 03:46:36
您需要调用它才能让您的onActivityResult
被调用。在您的对话框中,当您正在关闭时,将此代码放入
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
https://stackoverflow.com/questions/41567978
复制相似问题