这让我发疯了。我正在尝试使用fragments
切换spinner
,但我无法弄清楚我的错误在哪里。当我点击其中一个spinner
项时,它会始终显示 片段3 的内容,其他内容则不会显示。
我现在浏览了几个小时的互联网,但找不到一个可以理解我的问题的解决方案,因为我是Android编程的新手。
感谢任何帮助!
MainActivity.java
// Setup spinner
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(new MyAdapter(
toolbar.getContext(),
new String[]{
"Fragment 1",
"Fragment 2",
"Fragment 3"
}));
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// When the given dropdown item is selected, show its contents in the
// container view.
switch (position) {
case 0:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, Fragment1.newInstance()).commit();
case 1:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, Fragment2.newInstance()).commit();
default:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, Fragment3.newInstance()).commit();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Fragment1.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1Fragment extends Fragment {
public static Fragment1Fragment newInstance() {
Fragment1Fragment fragment = new Fragment1Fragment();
return fragment;
}
public Fragment1Fragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_fragment1, container, false);
return rootView;
}
}
答案 0 :(得分:1)
亲爱的,
switch (position) {
case 0:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, Fragment1.newInstance()).commit();
break;
case 1:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, Fragment2.newInstance()).commit();
break;
default:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, Fragment3.newInstance()).commit();
break;
}
如果没有中断语句,则执行所有3行。所以第3片段。