如何从以前的活动中获取以下设置不同的按钮意图?

时间:2012-01-09 22:18:28

标签: android button android-intent onclick switch-statement

我想将额外的内容传递给我的NextActivity,以便NextActivity中的按钮可以有不同的意图。我成功地这样做来查看不同的布局,但没有关于如何在按钮上执行此操作的线索。 下面是具有工作setContentView开关的代码;

public class ContentViewer extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = this.getIntent().getExtras();
    int chooser = bundle.getInt("Layout");

    switch(chooser) {
    case 0:
        setContentView(R.layout.about);
        break;

    case 1:
        setContentView(R.layout.contact);
        break;

    case 2:
        setContentView(R.layout.contentviewer);
        break;

    case 3:
        setContentView(R.layout.contact);
        break;

    case 4:
        setContentView(R.layout.contact);
        break;

    case 5:
        setContentView(R.layout.contact);
        break;

    case 6:
        setContentView(R.layout.contact);
        break;

    case 7:
        setContentView(R.layout.contact);
        break;

    case 8:
        setContentView(R.layout.contact);
        break;

    case 9:
        setContentView(R.layout.contact);
        break;
    }
}
}

现在,在这些布局中,有一个具有相同ID的按钮,但我希​​望它根据不同的情况具有不同的Intent(如上面的setContentView)。

更新 Theres MainActivity,它有一个额外传递的列表视图。单击列表视图中的项目时,它将打开NextActivity(如代码中所示)。 NextActivity具有一个具有Button的布局。现在,根据MainActivity上单击的项目,Button将具有不同的Intent。例如,如果在MainActivity中单击了项目1,则打开NextActivity,覆盖Button以获得意图1.如果在MainActivity项目2中单击,则使用覆盖按钮打开NextActivity以使意图2 INSTEAD of intent 1.足够清楚?

2 个答案:

答案 0 :(得分:3)

看起来你已经走在正确的轨道上了。

您需要做的第一件事是确保您的Button在xml android:id="@+id/my_button"

中具有ID

然后在你的setContent逻辑获得对该按钮的引用之后:

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

然后,您可以向该按钮添加onClick侦听器以处理用户点击:

myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Your switch logic should go here!
            }
        });

在onClick功能中你可以添加你的开关逻辑,你可能有一个单独的额外功能,但这取决于你,你基本上可以像上面那样做,但调用不同的意图而不是设置内容。

答案 1 :(得分:2)

你可能需要做这样的事情:

 int valueFromBundle = get value from bundle here...; 

 Button ipButton = (Button)findViewById(R.id.my_button);

 ipButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               switch(chooser) { 
                case 0:
                Intent i = new Intent(fromActivity.class, toActivity.class);
                startActivity(i);
                break;
                case 1:
                Intent i = new Intent(fromActivity.class, toActivity.class);
                startActivity(i);
                break;
                etc..,



             }

            }
        });