Finish () Активность от другого без запуска с StartActivityForResult ()? - PullRequest
0 голосов
/ 25 сентября 2011

У меня AsyncTask в отдельном файле (так как он использует примерно половину моих действий), и в этом AsyncTask у меня есть конструктор с контекстом в нем, чтобы я мог показать диалог прогресса и т. Д. Единственная проблема, которая у меня есть, - это тот контекст не содержит 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);
    }
}
}

1 Ответ

0 голосов
/ 25 сентября 2011

Вопрос не совсем ясен, но способ показать, что действие завершено, посредством намерения. Вы можете настроить свою деятельность на частное намерение после ее завершения, и исходное приложение получит это намерение, возможно, даже получит от него результаты.

...