三个按钮,每个按钮以不同的Int启动相同的Activity。但是当选择任何按钮时,它会加载所有3个活动

时间:2014-03-29 14:54:06

标签: java android button android-activity

我正在编写一个作业,我已经运行了核心功能,但我对此很困惑。我在这个Activity / Fragment上有3个按钮,每个按钮都会向一个具有不同整数的新Activity发送一个Intent来设置主游戏的速度。

按钮1设置速度10,按钮2设置速度30,按钮3设置速度50.然而,无论我点击哪一个,它首先以速度50启动活动,然后当该活动完成时,它是以速度30开始,然后以速度10开始。它基本上是循环并开始所有可能的活动,但我只想要选择的一个开始。

app

这是代码,据我所知,它就在这里。

public class LevelsFragment extends Fragment implements OnClickListener {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{    
    View rootView = inflater.inflate(R.layout.fragment_levels, container, false);

    Button b1 = (Button)rootView.findViewById(R.id.button1);
    Button b2 = (Button)rootView.findViewById(R.id.button2);
    Button b3 = (Button)rootView.findViewById(R.id.button3);
    b1.setOnClickListener(this);
    b2.setOnClickListener(this);
    b3.setOnClickListener(this);

    return rootView;
}

@Override
public void onClick(View v) {
    switch (v.getId())
    {
        case R.id.button1:
            Intent i1 = new Intent(getActivity(), GameActivity.class);
            i1.putExtra("s", 10);
            startActivity(i1);
        case R.id.button2:
            Intent i2 = new Intent(getActivity(), GameActivity.class);
            i2.putExtra("s", 30);
            startActivity(i2);
        case R.id.button3:
            Intent i3 = new Intent(getActivity(), GameActivity.class);
            i3.putExtra("s", 50);
            startActivity(i3);
    }       
}
}

2 个答案:

答案 0 :(得分:2)

您忘记在切换语句中添加break

switch (v.getId())
    {
        case R.id.button1:
            Intent i1 = new Intent(getActivity(), GameActivity.class);
            i1.putExtra("s", 10);
            startActivity(i1);
            break;
        case R.id.button2:
            Intent i2 = new Intent(getActivity(), GameActivity.class);
            i2.putExtra("s", 30);
            startActivity(i2);
            break;
        case R.id.button3:
            Intent i3 = new Intent(getActivity(), GameActivity.class);
            i3.putExtra("s", 50);
            startActivity(i3);
            break;
    }       

答案 1 :(得分:2)

这是一个经典之作,你忘了在不同的案例中加上break;