onCreate中显示的Android上下文菜单

时间:2011-04-06 15:27:22

标签: android xml contextmenu

我正在尝试添加以下功能:如果用户单击mainActivity中的按钮,它会启动另一个Activity,并且必须在屏幕上弹出一个包含两种可能性的菜单。当用户选择这两种可能性时,我的布局中将加载与网络不同的XML。

我不知道是否可以访问onCreate方法中的上下文菜单,或者是否有其他方法可以执行此操作?

2 个答案:

答案 0 :(得分:0)

弹出一个AlertDialog,其中包含您要显示的项目列表。选择项目时,触发startActivity(意图)。

示例代码: http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList

答案 1 :(得分:0)

为什么在加载新活动之前不显示包含这两个选项的对话框?然后,根据用户的选择显示相应的xml?

我会这样做:

  1. 您的mainActivity正在运行
  2. 当用户单击您的按钮时,您将显示一个AlertDialog,其中“positive”按钮代表第一个xml文件,“negative”按钮代表您的第二个xml。
  3. 单击任何按钮后,您将使用不同的Intent-actions显示第二个Activity,并检查第二个Activity的onCreate方法中使用的意图。
  4. 对于您的按钮:

    Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent act2 = null;
                        switch (which) {
                        case DialogInterface.BUTTON_POSITIVE:
                            // layout 1
                            act2 = new Intent("package.example.act2_layout1");
                            startActivity(act2);
                            break;
                        case DialogInterface.BUTTON_NEGATIVE:
                            act2 = new Intent("package.example.act2_layout2");
                            startActivity(act2);
                        }
                    }
                };
    
                AlertDialog.Builder builder = new AlertDialog.Builder(mainActivity.this);
                builder.setTitle("Make your choice")
                    .setPositiveButton("Layout 1", listener)
                    .setNegativeButton("Layout 2", listener);
            }
        });
    

    然后在onCreate方法中:

    Intent starter = getIntent();
        if (starter.getAction().equals("package.example.act2_layout1")) {
            // use layout 1
        } else if (starter.getAction().equals("package.example.act2_layout2")) {
            // use layout 2
        }