2013-09-01 40 views
-1

我正在嘗試從類中完成活動,如果發生任何異常。 我做這樣的事情:在android中完成類的活動

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); 

從一個活動,叫A類閱讀somefil e,如果拋出異常,它應該完成活動。如上所述,我完成了活動的背景。但這不起作用?請說明爲什麼以及如何解決這個問題。?

+0

你在哪裏使用這個'一個一個新的= A(本);'在OnCreate()? – bixiaopeng

+0

它怎麼不起作用?我試過了,它運行良好。 – growic

+0

看到這個http://stackoverflow.com/questions/9977881/finish-activity-from-a-separate-myjavaclass-java –

回答

0

使公共職能的一類:

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

再從B級呼叫finishA()

0

嘗試使用代理從同一活動類完成它....

活動

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

EndActivity.java

公共接口EndActivity { 公共無效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); 
-1

從主要活動通過 「本」 的類構造函數做正常通話。

,然後在此類

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(); 
    } 
} 
+0

是否可以將Activity作爲參數傳遞? – Mohit

+0

是的,它可能將Activty作爲參數傳遞 –