
我正在创建一个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调用后没有正确显示所选项目?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)