我正在编写一个作业,我已经运行了核心功能,但我对此很困惑。我在这个Activity / Fragment上有3个按钮,每个按钮都会向一个具有不同整数的新Activity发送一个Intent来设置主游戏的速度。
按钮1设置速度10,按钮2设置速度30,按钮3设置速度50.然而,无论我点击哪一个,它首先以速度50启动活动,然后当该活动完成时,它是以速度30开始,然后以速度10开始。它基本上是循环并开始所有可能的活动,但我只想要选择的一个开始。
这是代码,据我所知,它就在这里。
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);
}
}
}
答案 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;
。