android– 如何修复Spinner在片段中OnItemSelected调用后没有正确显示所选项目?

android– 如何修复Spinner在片段中OnItemSelected调用后没有正确显示所选项目?,第1张

概述我正在创建一个SportsApp,在我的NFL页面中,用户将选择他们想要查看的周,它不会显示用户选择的周,但会显示正确的数据.微调器显示默认的第1周文本,但加载所选周的正确值.publicclassNFLWeekSpinnerextendsFragment{SpinnerNFLspinner;ArrayAdapter<CharSequence

我正在创建一个SportsApp,在我的NFL页面中,用户将选择他们想要查看的周,它不会显示用户选择的周,但会显示正确的数据.微调器显示默认的第1周文本,但加载所选周的正确值.

 public class NFLWeekSpinner extends Fragment {    Spinner NFLspinner;    ArrayAdapter<CharSequence> spinnerAdapter;    String inputWeekFormatted;    @Nullable    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, @Nullable VIEwGroup container, Bundle savedInstanceState) {        VIEw vIEw = inflater.inflate(R.layout.nfl_spinner_frag,container,false);        NFLspinner = vIEw.findVIEwByID(R.ID.NFLSpinner);        spinnerAdapter = ArrayAdapter.createFromresource(this.getActivity(),R.array.weekNum,                androID.R.layout.simple_spinner_item);        //spinnerAdapter.setDropDownVIEwResource(androID.R.layout.simple_dropdown_item_1line);        NFLspinner.setAdapter(spinnerAdapter);        NFLspinner.setonItemSelectedListener(new AdapterVIEw.OnItemSelectedListener() {            boolean user = false;            @OverrIDe            public voID onItemSelected(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) {                if(user) {                    String selecteDWeek = (String) parent.getItemAtposition(position);                    if (selecteDWeek.length() > 6) {                        inputWeekFormatted = selecteDWeek.substring(5, 7);                    } else {                        inputWeekFormatted = selecteDWeek.substring(5, 6);                    }                    ((MainActivity) getActivity()).loadNFLscoreboard(inputWeekFormatted);                }                user = true;                // count++;            }            @OverrIDe            public voID onnothingSelected(AdapterVIEw<?> parent) {            }        });        return vIEw;    } @OverrIDe    public voID onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }}

MainActivity.java

public class MainActivity extends AppCompatActivity {    private static final String BACK_ROOT_STACK = "root_fragment";    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        DateFormat sdf = new SimpleDateFormat("yyyyMMdd");        //loadMLBscoreboard(defaultDate);        loadNavbar();    }    public voID loadNavbar() {        final BottomNavigationVIEw mBottomNav = findVIEwByID(R.ID.bottom_navigation);        final String defaultDate = "20180915";        mBottomNav.setItemIconTintList(null);        mBottomNav.setonNavigationItemSelectedListener(new BottomNavigationVIEw.OnNavigationItemSelectedListener() {            @OverrIDe            public boolean onNavigationItemSelected(@NonNull MenuItem item) {                mBottomNav.setItemIconTintList(null);                switch (item.getItemID()) {                    case R.ID.menu_nfl:                        loadNFLscoreboard("1");                        break;                    case R.ID.menu_baseball:                        DateFormat sdf = new SimpleDateFormat("yyyyMMdd");                        String today = sdf.format(Calendar.getInstance().getTime());                        loadMLBscoreboard(defaultDate);                        break;                        default:                            loadMLBscoreboard(defaultDate);                }                return true;            }        });    }    public voID loadMLBscoreboard(String inputDate) {        LoadscoreboardFragment loadscoreboardFragment = new LoadscoreboardFragment();        loadMLBFragment(inputDate, loadscoreboardFragment);    }    private voID loadMLBFragment(String inputDate, LoadscoreboardFragment loadscoreboardFragment) {        Bundle bundle = new Bundle();        //Load date Fragment        DateFragment dateFragment = new DateFragment();        bundle.putString("inputDateKey", inputDate);        loadscoreboardFragment.setArguments(bundle);        FragmentManager fragmentManager = getFragmentManager();        FragmentTransaction newFT = fragmentManager.beginTransaction();        newFT.add(loadscoreboardFragment, "Loading");        newFT.replace(R.ID.holderFragment, dateFragment)                .addToBackStack(BACK_ROOT_STACK)                .commit();    }    public voID loadNFLscoreboard(String nflWeek) {        LoadNFLscoreboardFragment loadNFLscoreboardFragment = new LoadNFLscoreboardFragment();        NFLWeekSpinner weekSpinner = new NFLWeekSpinner();        Bundle bundle = new Bundle();        bundle.putString("inputWeekKey",nflWeek);        loadNFLscoreboardFragment.setArguments(bundle);        FragmentManager fragmentManager = getFragmentManager();        fragmentManager.beginTransaction()                .replace(R.ID.main_recycle, loadNFLscoreboardFragment)                .commit();            fragmentManager.beginTransaction()                    .replace(R.ID.holderFragment,weekSpinner)                    .addToBackStack(BACK_ROOT_STACK)                    .commit();      }    }

R.array.WeekNum

 <string-array name="weekNum">    <item>Week 1</item>    <item>Week 2</item>    <item>Week 3</item>    <item>Week 4</item>    <item>Week 5</item>    <item>Week 6</item>    <item>Week 7</item>    <item>Week 8</item>    <item>Week 9</item>    <item>Week 10</item>    <item>Week 11</item>    <item>Week 12</item>    <item>Week 13</item>    <item>Week 14</item>    <item>Week 15</item>    <item>Week 16</item>    <item>Week 17</item></string-array>

解决方法:

我终于想通了!!!在NFLSpinner.OnItemSelected调用中,一旦用户选择了新的一周,我就调用MainActivity loadNFLscoreboard方法,该方法在每次调用时创建一个新的Spinner实例.我将NFLWeekSpinner声明移到了loadNFLscoreboad方法之外,因为在每次调用时都没有创建新的微调器,所以正确显示了所选周.

感谢您的所有帮助@lionscribe

总结

以上是内存溢出为你收集整理的android – 如何修复Spinner在片段中OnItemSelected调用后没有正确显示所选项目?全部内容,希望文章能够帮你解决android – 如何修复Spinner在片段中OnItemSelected调用后没有正确显示所选项目?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1118594.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存