【问题标题】:How to return to initial activity before method is completed?如何在方法完成之前返回初始活动?
【发布时间】:2013-06-05 08:00:44
【问题描述】:

假设我有一些 Activity A。Activity A 有一个按钮,它从 B 类调用方法 parse()parse() 有布尔检查。如果为真,parse() 返回一个Object(例如String);如果为假,parse() 在 B 类中调用 promtError()

活动 A:

public class A extends Activity {
 //
 // activity body
 //

 public void onClick(View v){
 String s = B.parse();
 Intent i = new Intent(getApplicationContext(),
                    AddToCheckActivity.class);
 i.putExtra("tip", s);
 startActivity(i);
 finish();
}
}

promtError():

public static void promtError(){
        context = MyApplication.getAppContext();
        AlertDialog.Builder builder = new AlertDialog.Builder(MyApplication.getAppContext());
        builder.setMessage("Потеряна связь с сервером. Попробуйте позже.")
               .setCancelable(false)
               .setPositiveButton("закрыть", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                        //do things
                   }
               });
        AlertDialog alert = builder.create();
        alert.show();
    }

方法解析():

public String parse(){
    if(a == 1) return generate();
    else promtError();
    return "";
}

我应该如何修改promtError()parse() 以在我按下Activity A 上的按钮之前返回到Activity A?所以我想要类似于 GOTO 的行为,当 promtError() 触发时,parse() 不会返回“”并转到 Activity A,就像从未调用过 public void onClick(View v)。

事实上,这段代码的目的是保护应用程序在互联网连接丢失时不崩溃。应用程序有很多地方调用 parse()。 parse() 向/从服务器发送/接收数据。因此,我希望将安全检查添加到 parse(),而不是添加到会调用它的活动中

【问题讨论】:

  • 为什么 promtError 是静态的?
  • 为什么你不能让 B 类返回错误代码或抛出异常,然后让 ActivityA 通过让 A 显示消息本身来适当地处理这个问题?只是为了澄清,B也是Activity吗?因为我不明白你为什么需要回到ActivityA,如果你从未离开过它?
  • B 不是活动。我不在活动 A 中进行对话的原因 - 我有很多活动和对话消息,其原因对于所有活动都是相同的

标签: android android-intent dialog


【解决方案1】:

在我按下按钮之前,我应该如何 modefiy promtError() 返回到 A 的活动?

您想说“我如何关闭对话框?”。拨打cancel()dismiss()

public static void promtError() {
    context = MyApplication.getAppContext();
    AlertDialog.Builder builder = new AlertDialog.Builder(MyApplication.getAppContext());
    builder.setMessage("Потеряна связь с сервером. Попробуйте позже.")
            .setCancelable(false)
            .setPositiveButton("закрыть", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.dismiss();
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}

【讨论】:

  • 如果我只是关闭对话框,它不会继续执行 parse(),返回 "" 作为解析的结果吗?
  • parse() 将在关闭对话框之前返回 ""。
  • 这个想法是为了防止返回""。我想要类似于 goto 但现在很丑的东西。
  • onClick()中检查返回值,即String s。如果它是空字符串 (""),则不执行任何操作。并将您的新Intent 放在dialog.dismiss() 之前
  • is 是不错的 idia,我之前考虑过,但 generate 可以输出任何类型的字符串。实际上,此代码的目的是在 Internet 连接丢失时保护应用程序免于崩溃。应用程序有很多地方调用 parse()。 parse() 向/从服务器发送/接收数据。因此,我希望将 safty chack 添加到 parse() 中,而不是添加到会调用它的活动中。
猜你喜欢
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多