9

次のコードを使用します。

public class Settings extends Activity implements OnClickListener {

    private Activity activity;
    private AlertDialog.Builder builder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.settings);

        Button bAdd = (Button) findViewById(R.id.bAdd);
        bAdd.setOnClickListener(this);

        activity = this;
        builder = new AlertDialog.Builder(activity);
        builder.setMessage("message")
           .setTitle("title");

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bAdd:
            AlertDialog dialog = builder.create();
            break;
        }

    }


}

しかし、何らかの理由でポップアップが表示されず、何もしません..この誤動作の原因についてのアイデアはありますか? ありがとう!

4

5 に答える 5

10

show()の代わりにメソッドを呼び出す必要がありcreate()ます。

注: create()メソッドは のインスタンスのみを作成しますがDialog、そのインスタンスは表示されません。

1 つの提案:

Dialog次のように返すメソッドを作成できます。

public Dialog createNewDialog(int type) {
   AlertDialog dlg = null;
   switch (type) {
      case SOME_CONSTANT:
         dlg = new AlertDialog.Builder(ActivityName.this / this)
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton("Yes", null)
            .create();
      break;
   }
}

次に、次のように呼び出すことができます。

createNewDialog(SOME_CONSTANT).show();

そしてあなたのDialog意志が示されます。

特にあなたの場合、次のコード スニペットを使用して目標を達成できます。

@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bAdd:
            createNewDialog(SOME_CONSTANT).show();
            break;
        }
    }

それが役に立てば幸い。

于 2012-11-13T12:14:55.477 に答える
0

に電話する必要があります builder.show()

于 2012-11-13T12:16:39.833 に答える
0

私の場合、ダイアログがミリ秒単位で表示および非表示になります。これを解決するには、ダイアログを呼び出す同じメソッドでfinish()またはfinishActivity()を呼び出さないでください。

createNewDialog(SOME_CONSTANT).show();
finish();

これにより、アクセスする前であってもダイアログが破棄されます。

于 2016-09-24T19:58:26.437 に答える
-1

表示されていない理由は.show()AlertDialog

@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bAdd:
            AlertDialog dialog = builder.create();
            dialog.show();
            break;
        }

    }
于 2012-11-13T12:30:55.647 に答える