1

カスタムダイアログボックスを画面に表示するクラス(ペーパークリップ)を作成しました。私のアクティビティでは、Paperclip のインスタンスを作成し、アクティビティの上にダイアログ ボックスを表示します。私が欲しいのは、特定のボタンが押されると、アクティビティのコードが実行されることです。プロジェクト内のさまざまなアクティビティで再利用できるダイアログ ボックスが必要なため、このコードをアクティビティから実行したいと考えています。

クラスで変数を作成し、アクティビティでリスナーをアタッチすることを考えていました。これは良い方法ですか、それとももっと簡単な解決策はありますか?

public class Paperclip {
    int i = 0;
    Dialog myDialog;
    TextView t;
    int mid;
    Context context2;

    public Paperclip(Context context) {
        super();
        context2 = context;
    }

    public void Showit(final String[] Messages) {
        final int lengte = Messages.length;

        myDialog = new Dialog(context2, R.style.CustomDialogTheme);
        myDialog.setContentView(R.layout.messagebox);
        t = (TextView) myDialog.findViewById(R.id.message);
        if (lengte != 0) {
            if (i < lengte) {
                t.setText(Messages[i]);
                i++;
            }
            Button iets = (Button) myDialog.findViewById(R.id.mbja);
            iets.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    if (i < lengte) {
                        t.setText(Messages[i]);
                        i++;
                    } else{
                        t.setText("Ik hoop dat deze informatie nuttig was. Klik op Ja om alles opnieuw te horen.");
                        i = 0;
                    }

                }
            });
        }
        Button iets2 = (Button) myDialog.findViewById(R.id.button2);
        iets2.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                myDialog.dismiss();
            }
        });

        Button iets3 = (Button) myDialog.findViewById(R.id.button3);
        iets2.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                //TODO: execute code from activity here.
            }
        });

        myDialog.show();
    }
}

ありがとう!

4

3 に答える 3

0

を設定しOnClickListener、イベントButton内でメソッドを呼び出します。onClick()

public class MyActivity extends Activity {
    Button myButton;
    String[] mMessages = new String[]{"Message 1", "Message 2", "Message 3"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myButton = (Button) findViewById(R.id.myButton);

        myButton.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                Paperclip p = new Paperclip(MyActivity.this);
                p.showit(mMessages);
            }
        });
    }
}

編集: タイプミスを修正し、コードを更新しました編集 #2: 更新された質問とコード スニペットに基づいてコードを更新しました

于 2013-05-19T10:56:50.300 に答える
0

アクティビティでダイアログ ボックス ボタンのインスタンスを作成し、それにリスナー イベントを追加して、このリスナー内にコードを投稿する必要があります。

于 2013-05-19T10:57:19.437 に答える
0

リスナーのほかにブロードキャストを使用してみて、アクティビティにブロードキャストを実装し、クラスから送信できます。ここに良い例があります

于 2013-05-19T11:08:03.957 に答える