[英]Finish() Activity from other one without starting it with StartActivityForResult()?
我在单独的文件中有一个AsyncTask(因为它使用了大约一半的活动),并且在那个AsyncTask中,我有一个带有上下文的构造函数,所以我可以显示进度对话框等。我唯一的问题是Context不包含StartActivityForResult
仅StartActivity
。 有什么想法如何从另一个活动中完成活动,因为我无法发送SetResult()
?
这是我的AsyncClass代码:
public class AsyncClass extends AsyncTask<String, Integer, Boolean> {
private ProgressDialog progressDialog;
private Context context;
private String message;
private String url;
private String methodName;
private String get;
private List<Shops> list;
private LinearLayout linearLayout;
public AsyncClass(Context context, String message, String methodName,
String url, LinearLayout view) {
this.context = context;
this.message = message;
this.methodName = methodName;
this.url = url;
this.linearLayout = view;
initialize();
}
private void initialize() {
list = new ArrayList<ShopList>();
get = context
.getString(R.string.web_service_method_name_get);
}
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(context);
progressDialog.setMessage(message);
progressDialog.show();
}
@Override
protected Boolean doInBackground(String... params) {
if (methodName.equalsIgnoreCase(get)) {
boolean isResultEmpty;
int totalPropertyCount;
SoapObject partialResult = SoapObjectOperations.InvokeMethod(url,
methodName);
SoapObject result = (SoapObject) partialResult.getProperty(0);
totalPropertyCount = result.getPropertyCount();
if (totalPropertyCount > 0) {
for (int detailCount = 0; detailCount < totalPropertyCount; detailCount++) {
SoapPrimitive soapPrimitive = (SoapPrimitive) result
.getProperty(detailCount);
String name = soapPrimitive.getAttribute("name").toString();
String id = soapPrimitive.toString();
Shop shop = new Shop(id, name);
list.add(shop);
}
}
if (list.isEmpty()) {
isResultEmpty = true;
} else {
isResultEmpty = false;
}
return isResultEmpty;
}
else {
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
if (methodName.equalsIgnoreCase(get)) {
if (result) {
TextView textViewEmpty = new TextView(context);
textViewEmpty
.setText("Bla Bla Bla");
linearLayout.addView(textViewEmpty);
} else {
for (int i = 0; i < list.size(); i++) {
Button button = new Button(context);
button.setText(list.get(i).getName());
button.setId(list.get(i).getId());
button.setOnClickListener(new OpenShop());
linearLayout.addView(button);
}
}
}
}
class OpenShop implements View.OnClickListener {
@Override
public void onClick(View view) {
ShopDetail.SetId(view.getId());
Intent intent = new Intent(view.getContext(), ShopDetail.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
这个问题还不是很清楚,但是通过活动来表示活动已完成的信号。 您可以在活动结束时广播活动意图,原始应用程序将收到此意图,甚至可能从中获得结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.