【问题标题】:Three buttons, each start the same Activity with a different Int. But when selecting any button, it loads all 3 Activities三个按钮,每个按钮以不同的 Int 启动同一个 Activity。但选择任何按钮时,它会加载所有3个活动
【发布时间】:2014-03-29 14:54:06
【问题描述】:

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

按钮 1 设置速度 10,按钮 2 设置速度 30,按钮 3 设置速度 50。但是,无论我单击哪个,它都会先以 50 的速度启动 Activity,然后当该 Activity 完成时,它是以 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);
    }       
}
}

【问题讨论】:

    标签: java android button android-activity


    【解决方案1】:

    您忘记在 switch 语句中添加 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;
        }       
    

    【讨论】:

    • 简直不敢相信,菜鸟错误!谢谢。
    【解决方案2】:

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

    【讨论】:

    • 哇,我的讲师甚至不知道这是怎么回事;不知道我能不能再对他有多大的信心了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2018-12-20
    • 2015-08-18
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多