2013-02-24 73 views
-2

Java新手來了。Java [android] Activity,extern類

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
AlertDialog dlg = builder.setMessage(messageText).create(); 
dlg.setOwnerActivity(this); 
dlg.show(); 

^這個代碼工作以及在主類,但是當我試圖讓一個外部一個這樣的:

Messages myMessages = new Messages(); 
myMessages.SendAlert("Oh shi--!"); 

+

public class Messages extends Activity { 
    public void SendAlert(String messageText) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     AlertDialog dlg = builder.setMessage(messageText).create(); 
     dlg.setOwnerActivity(this); 
     dlg.show(); 
    } 
} 

^它不工作。

我可以用它做什麼? : - \

+0

請列出您所有的代碼,以及你正在嘗試做的,所以我們有關於你想要做什麼 – 2013-02-24 11:41:35

+0

什麼是「不工作」的意思線索?你有編譯錯誤還是異常? – Kai 2013-02-24 11:41:49

+0

該活動目前在哪裏,它有你打電話的方法? – Gjordis 2013-02-24 11:41:50

回答

2

因爲你不能創建這樣的新活動。 將創建者活動傳遞給消息的構造函數,而不是擴展活動。

public class Messages { 
private Activity activity; 
public Message(Activity activity){ 
    this.activity = activity; 
} 

public void SendAlert(String messageText) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
    AlertDialog dlg = builder.setMessage(messageText).create(); 
    dlg.setOwnerActivity(activity); 
    dlg.show(); 
} 

}

+1

而不是構建帶'Activity'的消息'你應該使用'Context'創建它。 – Macarse 2013-02-24 11:49:43

+0

dlg.setOwnerActivity(activity);需要活動而不是上下文。不知道他爲什麼使用它,我從來沒有使用它。但是如果他確實刪除了這個調用,Context就足夠了。 – 2013-02-24 11:52:00

0

我認爲你正在尋找一個輔助類。 主要想法是使用靜態方法併爲每個呼叫傳遞Context

例如:

public class AlertHelper { 

    private AlertHelper() { 
    } 

    public static void sendAlert(Context ctx, String messageText) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(ctx); 
    AlertDialog dlg = builder.setMessage(messageText).create(); 
    dlg.show(); 
    } 
}