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); 
    } 
} 
} 

的问题是不完全清楚,但一种方式来发出信号完成了一个活动是一个意图的方式。完成后,您可以让您的活动广播一个私人意图,原始应用程序会收到此意向,甚至可能从中获得结果。

+0

为了荣誉我对Android很有新意,我不想告诉一些事件完成了,我想指出这一点:例子=我有2个活动,A和B,A开始B,用户玩B然后点击按钮,B通常会执行setResult()并完成,活动A将重新启动(对于已从数据库中的活动B更改的更新数据) – Alone89