Spinner选项打开一个新的Activity问题

时间:2016-02-01 11:45:17

标签: android arrays android-activity spinner

我是Android开发和Java的新手,我正在尝试根据网络上的教程做一个应用程序。无法找到任何我需要的东西对我有用。我有一个简单的微调器有5个选项,我想在单击一个选项打开一个新活动时。这就是我到目前为止所发生的事情,当我进入游戏选项卡以便从旋转器中选择我想要的内容时,它会直接进入第一种情况(GamesAnimals)。我想象它一定是简单的东西,但直到现在我都找不到它。

提前感谢您的支持。

以下是代码:

package com.gadgetcatch.firstwords;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;


public class Games extends Fragment {

Intent i;

Spinner gamesCategory;

String [] shapes = {
        "",
        "ANIMALS",
        "BODY",
        "CLOTHES",
        "FOOD",
        "TRANSPORT",
};
private static final String ARG_SECTION_NUMBER = "section_number";

public static Games newInstance(int sectionNumber) {
    Games fragment = new Games();
    Bundle args = new Bundle();
    args.putInt(ARG_SECTION_NUMBER, sectionNumber);
    fragment.setArguments(args);
    return fragment;
}

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

    gamesCategory = (Spinner)v.findViewById(R.id.spinner);
    ArrayAdapter <String> nameArrayAd = new ArrayAdapter <>(getActivity(), android.R.layout.simple_spinner_dropdown_item, shapes);

    gamesCategory.setAdapter(nameArrayAd);
    gamesCategory.setOnItemSelectedListener(
            new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

                    int position = gamesCategory.getSelectedItemPosition();

                    if (position > 0) ;
                    switch (position) {

                        case 0:
                            i = new Intent(getActivity(), GamesAnimals.class);
                            break;
                        case 1:
                            i = new Intent(getActivity(), GamesBody.class);
                            break;
                        case 2:
                            i = new Intent(getActivity(), GamesClothes.class);
                            break;
                        case 3:
                            i = new Intent(getActivity(), GamesFood.class);
                            break;
                        case 4:
                            i = new Intent(getActivity(), GamesTransport.class);
                            break;

                    }

                    startActivity(i);

                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {

                }
            }
    );


    return v;
}

}

1 个答案:

答案 0 :(得分:1)

实际上,当您设置'invoice_no'时,会触发spinner Adaper位置spinner的默认选择,这就是您0活动正在启动的原因。您可以做的是区分初始化模式和选择模式。在构建UI时,将GameAnimals的布尔值设置为initialization,然后在true中将其设置为false。这项工作的一部分将解决您的问题。

希望这会有所帮助。

<强>更新

声明表示初始化模式的新变量

onItemselection

然后在Spinner gamesCategory; boolean initializationMode = true; 的{​​{1}}中使用此变量 Spinner gamesCategory; boolean initializationMode = true;

onSpinnerSelection