【问题标题】:In android finishing the activity from a class在android中完成一个类的活动
【发布时间】:2013-09-04 13:37:34
【问题描述】:

如果抛出任何异常,我正在尝试完成课程中的活动。 我正在做这样的事情:

A 类:

构造函数

public A(Context context){
   this.context=context;
   read();
 }

private void read(){
  try {
        ObjectInputStream ois = new  ObjectInputStream(context.getAssets().open("Somefile.bin"));
   }catch (IOException e) {

    Log.d("Lets check","IOException");
    ((ActivityName)context).finish();
    e.printStackTrace();
    }
}

活动

A a=new A(this);

从activity中调用A类读取somefile,如果有异常抛出,应该结束activity。如上所述,我确实完成了活动的上下文。但这不起作用?请说明为什么以及如何解决这个问题。?

【问题讨论】:

  • 你在哪里使用这个A a=new A(this); onCreate()?
  • 怎么不工作了?我试过了,效果很好。
  • 它在我的设备上也可以正常工作(LT26i Android4.0.4)...您想提供更多详细信息吗?

标签: java android exception android-activity


【解决方案1】:

在 A 类中创建一个公共函数:

public static finishA(){
this.finish();
}

然后从 B 类调用finishA()

【讨论】:

    【解决方案2】:

    尝试使用委托从同一个活动类中完成它......

    活动

       public MyActivity extends Activity implements EndActivity
        {
            .
            .
            .
            @override
            public void endActivity()
            {
                finish();
            }
        }
    

    EndActivity.java

    公共接口 EndActivity { 公共无效结束活动(); }

    A.java

    public A
    {
        private EndActivity endActivity;
        public A(EndActivity endActivity)
        {
           this.endActivity=endActivity;
           read();
         }
    
        private void read()
        {
          try
          {
             ObjectInputStream ois = new  ObjectInputStream(context.getAssets().open("Somefile.bin"));
           }
           catch (IOException e)
           {
               Log.d("Lets check","IOException");
               endActivity.endActivity();
               e.printStackTrace();
            }
        }
    

    然后从活动中进行正常调用

    A a=new A(this);
    

    【讨论】:

      【解决方案3】:

      从主活动将“this”传递给构造函数。

      然后在课堂上

      Activity a;
      public A(Activity a){
         this.a=a;
         read();
      }
      
      private void read(){
          try {
              ObjectInputStream ois = new     ObjectInputStream(context.getAssets().open("Somefile.bin"));
              }catch (IOException e) {
      
                Log.d("Lets check","IOException");
                a.finish();
                e.printStackTrace();
          }
      }
      

      【讨论】:

      • 是否可以将Activity作为参数传递?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 2013-03-25
      相关资源
      最近更新 更多