0

私は何か珍しいことをしようとしています。メニューボタンにメニューが添付されたメインアクティビティがあります。メニューの 1 つの項目でダイアログが開き、メイン アクティビティに追加されるコントロールを選択できます。私はそれが機能しているので、コントロールを追加し、データベースに保存します(次の実行のために記憶されます)。ボタンの onClickListener をメイン アクティビティの onClick に設定する必要があります。

public class MyMainActivity extends Activity 
    implements View.OnClickListener, View.OnTouchListener
{

private Context mContext;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = this;
    AbsoluteLayout mMainActivityView = new AbsoluteLayout;
    SetContentView(mMainActivityView);
... populate mMainActivityView from database ...


public void onClick(View v) {
    switch (v.id) {
        case NEW_BUTTON_ID:
         // TODO implement click handler
    }
}
...

...
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case NEW_BUTTON_DIALOG_ID:
...
...    
            builder.setPositiveButton(android.R.string.ok,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            int XPos = Integer.valueOf(editXPos.getText().toString());
                            int YPos = Integer.valueOf(editYPos.getText().toString());
                            mDataLayer.AddControl(mScreenID, Width, Height, XPos, YPos, editButtonText.getText().toString());
                            Button button = new Button (mContext);
                            button.setLayoutParams(new AbsoluteLayout.LayoutParams(Width, Height, XPos, YPos));
                            button.setText(editButtonText.getText().toString());
                            mMainActivityView.addView(button);
                // How to set Listeners from main activity?
                            button.setOnClickListener(?????);
                            button.setOnTouchListener(?????);
                            MyMainActivity.this.removeDialog(NEW_BUTTON_DIALOG_ID);
                        }
                    });

            builder.setNegativeButton(android.R.string.cancel,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                    MyMainActivity.this.removeDialog(NEW_BUTTON_DIALOG_ID);
                    }
                });
        AlertDialog NewButtonDialog = builder.create();
        return NewButtonDialog;
    }
    return null;
}

onClick()では、 AlertDialog のボタンを使用してメイン アクティビティを参照するにはどうすればよいでしょうか。

4

2 に答える 2

0

onClick()メソッドへの特定のアクセスが必要なのはなぜですか? クラスで public メソッドを作成しmain、ダイアログとボタンのonClick()メソッドの両方から呼び出すだけです。悲しいことに、DialogInterface と View はスーパークラスを共有していませんが、オブジェクトを渡して、必要に応じてキャストすることができます。

于 2012-04-11T15:35:51.420 に答える