繁体   English   中英

没有从StartActivityForResult()启动而完成其他活动的Finish()活动?

[英]Finish() Activity from other one without starting it with StartActivityForResult()?

我在单独的文件中有一个AsyncTask(因为它使用了大约一半的活动),并且在那个AsyncTask中,我有一个带有上下文的构造函数,所以我可以显示进度对话框等。我唯一的问题是Context不包含StartActivityForResultStartActivity 有什么想法如何从另一个活动中完成活动,因为我无法发送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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM