2012-05-21 28 views
0

是否可以從常規Java類調用Activity的方法?如何在java中使用外部類的活動內的方法

這是活性的方法:

public void showMessage(String mensaje) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Are you sure you want to exit?") 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 

這是在外部(簡單的Java)代碼的方法類:

public void write(String importanChange) { 
    Context context = //Here I dont know what to do here (It's my question, 
        //but I tried other aproaches but all failed      
    ((MyActivity)mContext).showMessage(message); 

的原因是,我有一個框架它可以檢測模擬中的變化(Android應用程序),然後該模擬會通知該框架的變化,並決定變更是否重要。

所以如果改變很重要,框架必須在活動中執行showMessage方法。

回答

0

你應該定義你的方法,而不是public static void write(String importantChange)public void write(String importantChange)

把你方法「靜態」意味着你不必實例化包含您使用此方法,方法的類。

編輯:我剛剛看到你的「編輯」。因此,使用上下文在你的方法,我建議你通過一個背景下,作爲方法的參數,這樣的:public void write(String importantChange, Context context)

+0

我做到了,但編譯器給了我下一個錯誤: – user1408219

+0

05-21 15:19:21.917:E/AndroidRuntime(406):java.lang.RuntimeException:無法在未調用Looper.prepare的線程中創建處理程序() – user1408219

+0

如果必須將-Context-傳遞給許多.class或.java,導致調用執行寫入方法的相應類的最後一個方法,請不要緊? – user1408219

0

由於AlertDialog不需要Context你可以選擇創建一個工具方法:

public static void showMessage(String message) { 
    ... 
} 

public void write(String importanChange) { 
    MyActivity.showMessage(msg); 
    ... 
} 
0

試試這個,

對於如:

Activity Class: 


     public class MyActivity extends Activity { 

        onCreate(.....){ 

       } 

     public void go(){ 

     //Some code 

    } 



Java External Class in the same package: 


public class MyDemo { 

    MyActivity ac; 
        public MyDemo(MyActivity ac) { 


          this.ac = ac; 
        } 

       public void foo() { 

          ac.go(); // Access the activity's method 
        } 

    } 
0
public static void showMessage(String importantMensaje){   
     final String mensajeAMostrar = importantMessage; 
     Runnable runnable = new Runnable() { 
      public void run() { 
       handler.post(new Runnable() { // This thread runs in the UI 
        public void run() { 
         MyActivity.builder.setMessage(mensajeAMostrar) 
         .setCancelable(false) 
         .setPositiveButton("Of Course", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
         } 
         }); 
         AlertDialog alert = MyActivity.builder.create(); 
         alert.show(); 
        } 
       }); 
      } 
     }; 
     new Thread(runnable).start(); 
} 
相關問題