【问题标题】:Closing an activity from another class关闭另一个班级的活动
【发布时间】:2012-05-20 13:18:38
【问题描述】:

在创建我的 google-maps 应用程序时,我在 Android 中有一个问题。

我有一个活动如下

public class MapCallActivity extends MapActivity {
    classA class = new classA(this);
    classA.callMethod();
}

classA 定义如下:

 public class classA{
   public classA(Context context){
   this.myContext = context;
 }

   void callMethod(){
      if (isFileValid) {
        <do_something...>;
      } else {
        <call_the_activity's finish() method>;
      }
   }
 }   

有没有办法让&lt;call_the_activity's finish() method&gt; 关闭MapCallActivity

感谢任何帮助!

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    像这样你可以从另一个类调用Activity的finish方法。这是完美的工作。在 kotlin 代码中使用。

    class DialogHelper(applicationContext: Context) {
       
     private var context = applicationContext
    
        fun showDialog() {
            var dialog: Dialog? = null
            val builder = Dialog.Builder(context)
                .content(R.string.your_string)
                .positiveButton(R.string.str_ok, listener = {
                    (context as Activity).finish()
                    dialog?.hide()
                })
            dialog = builder.create()
            dialog.setCanceledOnTouchOutside(false)
            dialog.show()
        }
    }
    

    【讨论】:

      【解决方案2】:

      我通常做的是在我的活动中使用接收器,然后从 B 类 触发广播。 A 类 获得广播,其onReceive 处理工作。说 finish();

      【讨论】:

      • 请添加示例以便更好地理解。谢谢
      【解决方案3】:
      public class classA{
          public classA(Context context){
              this.myContext = context;
          }
      
          void callMethod(){
              if(isFileValid){
      
              }else{
                  ((Activity)myContext).finish();
              }
          }
      }
      

      【讨论】:

      • 有没有办法强制转换任何对象直接关闭它?
      • 如果其他类有这个Activity的引用。它可以。但其他 Activity 或 Service 不能。
      • 感谢您的帮助。我已经重新构建了这个问题,以便现在更清楚。你的代码还能在其中工作吗?
      • 不知道您为什么要这样做...系统应该会为您解决这个问题。如果Activity 已经被销毁,您还应该检查myContext 是否不等于null。
      • 这一行 -> ((Activity)myContext).finish();是我一直在寻找的。谢谢
      猜你喜欢
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2016-06-06
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多