2013-02-24 78 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(); 
    } 
}