-2

Java初心者はこちらです。

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

^まったく機能していません。

私はそれで何ができますか?:-\

4

2 に答える 2

2

そのような新しい活動を作成することはできないからです。Activityを拡張する代わりに、作成者のアクティビティをメッセージのコンストラクタに渡します。

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

}

于 2013-02-24T11:42:25.253 に答える
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();
  }
}
于 2013-02-24T11:54:05.933 に答える