0

当用户单击下一个按钮时,我正在尝试根据参数的值启动一个新活动

    <Button
    android:id="@+id/next"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/next" />

我认为我不应该使用我知道的代码来启动一个新活动,因为它只启动一个活动。

android:onClick="lanzarActividad"

我的目的是用户设置一个参数(一个数字),每个数字对应不同的活动。

我想我应该写一些类似的东西(在 onCreate 方法中)

Button btn=(Button)findViewById(R.id.next);
int parameter=1;
//it already contains a number, in our case, it might be for instance 1
    btn.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v)
        {
            switch(parameter)
            {
            //Now I get the problem.
               case 0 : 
               lanzarCalculate(v);

               case 1 :
               lanzarCalculate2(v);
            }
        }
    });

创建意图的方法是

public void lanzarCalculate(View view)
//si apretamos el boton calculate
{
    Intent i = new Intent(this, Calculate.class);
    Bundle b = new Bundle();
    b.putDouble("time", tau);
    i.putExtras(b);
    startActivity(i);
}

public void lanzarCalculate2(View view)
{
    Intent i = new Intent(this, Calculate2.class);
    Bundle b = new Bundle();
    b.putDouble("time", tau);
    i.putExtras(b);
    startActivity(i);
} 

在此处输入代码

非常感谢,希望你能帮到我。

4

2 回答 2

1

如果您搜索“开始活动” http://developer.android.com/training/basics/firstapp/starting-activity.html ,这在文档中得到了很好的解释

基本上你需要创建一个Intent,然后startActivity使用意图作为参数调用该方法,例如:

Intent intent = new Intent(this, YourActivity.class);
startActivity(intent);

有关更多选项和示例,请参阅文档页面。

于 2013-05-18T15:31:03.467 回答
1

我认为您的问题是您不确定如何“动态”使用 Intent。我就是这样做的,以防止重复代码

@Override
    public boolean onMenuItemClick(MenuItem item) 
    {
        Intent intent = new Intent();        // first, create your Intent object
        String nextAct = null;               // name for Activity to start with Intent
        String package = "com.my.package.";  // set package name
        int flag = -1;                      // in case you want to set certain flags depending on activity

        switch (item.getItemId())
        {
            case (R.id.logout):            // mine are menu options so you will use the ints that you have already
                nextAct = package + "LoginScreen";
                flag = Intent.FLAG_ACTIVITY_CLEAR_TOP;
                break;
            case (R.id.changeLocation):
                nextAct = package+ "ChangeLocation";   // package is reused but in some cases it different for me
                break;      
            default:
                Toast.makeText(getApplicationContext(), "Item currently not available", Toast.LENGTH_SHORT).show();
        }

        try 
        {
            if (nextAct != null)
            {
                intent = new Intent(BaseActivity.this, Class.forName(nextAct));  // change the String that I was setting to the Activity name
                if (flag != -1)
                {   intent.setFlags(flag);  }  // set my flags if I had any
                startActivity(intent);  // start the Activity as you normally would
            }

这是针对 PopupMenu 但您可以在onClick(). 我在代码中添加了注释以帮助解释它的作用。

还有,这

android:onClick="lanzarActividad"

在你的xml中会很好。有了这个,你就不需要定义你Button和听众

public void lanzarActividad(View v)
{
    // code from above
}

当您单击您的Button

编辑

似乎您的潜在问题是您需要使用YourActivityName.this而不是this在创建Intents. 此外,break;在每种情况下添加语句,否则它将继续运行下一个case. 但是上面的代码将使您无需重写Intent代码,因为大部分代码是相同的

于 2013-05-18T15:23:37.773 回答