Finish()来自其他人的活动,而不用StartActivityForResult()启动它?
问题描述:
我有一个AsyncTask在单独的文件(因为它使用它关于我的一半活动),并在该AsyncTask我有一个构造函数的上下文,所以我可以显示进度对话框等只有问题是上下文不包含StartActivityForResult
只有StartActivity
。任何想法如何从另一个活动完成活动,因为我不能发送SetResult()
?Finish()来自其他人的活动,而不用StartActivityForResult()启动它?
这里是我的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);
}
}
}
答
的问题是不完全清楚,但一种方式来发出信号完成了一个活动是一个意图的方式。完成后,您可以让您的活动广播一个私人意图,原始应用程序会收到此意向,甚至可能从中获得结果。
为了荣誉我对Android很有新意,我不想告诉一些事件完成了,我想指出这一点:例子=我有2个活动,A和B,A开始B,用户玩B然后点击按钮,B通常会执行setResult()并完成,活动A将重新启动(对于已从数据库中的活动B更改的更新数据) – Alone89