【发布时间】:2016-03-17 20:50:40
【问题描述】:
我有一个 Android 应用程序,它有一个 DialogFragment 调用异步进程(在下面的代码示例中称为“api.Async”)。完成后,我想展示另一个活动的结果。我不断收到“片段 [名称] 未附加到活动。”我该如何解决这个问题?完成后,如何向新活动发送信息?
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.dialog_lookup, null);
builder.setView(view)
.setPositiveButton(R.string.lookup, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
EditText text = (EditText) view.findViewById(R.id.username);
api.Async("GetByID/", text.getText().toString(), new badgerAPI.IApiResultRunnable() {
@Override
public void run(CMAPIResult apiResult) {
if (!apiResult.lmSuccess) {
showError(view.getContext(), "User not found", apiResult.lmErrorMessage).show();
} else {
String badgeuri = apiResult.lmResultDict.optString("badgeuri");
//APPLICATION ERRORS IN FOLLOWING FUNCTION
showBadge(view.getContext(), badgeuri);
}
}
});
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
;
return builder.create();
}
“showBadge”功能很简单:
private void showBadge(final Context act, String uri){
Intent intent = new Intent(act, DisplayBadge.class);
startActivity(intent);
}
我尝试了几种不同的方法:
getActivity()
view.GetContext();
[Class].this(甚至不会编译)
我可以通过哪些方式绕过片段(在活动完成时关闭)并在结果中显示来自函数的视图?
谢谢!
【问题讨论】:
-
您只能从主(“ui”)线程启动活动。
api.Async实现是什么样的?
标签: android android-fragments asynchronous