我正在处理导航抽屉和碎片,目前我正面临图像问题考虑(甜甜圈)是HomeFragment类。 我想要实现的是片段后台工作android
当用户导航片段A(甜甜圈) - >片段B(埃克莱尔)然后再次 可前往[ - >片段H(奇巧),然后导航 - >片段 我(棒棒堂)
和用户正在处理它。如果用户按后退按钮也可以根据层次 作品
super.onBackPressed();
至于结果逼人退的结果片段I - >片段H - > 片段B - >最后片段A.
现在我需要将用户直接导航到片段A而无需转到其他片段类。
我已经实现了这个使用
public class MainActivity extends AppCompatActivity {
//initializing
int check = 0; in MainActivity
....................
...................
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer);
.................
................
drawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv = (TextView) view.findViewById(R.id.textView1);
String aa = tv.getText().toString();
selectItemFragment(position, aa);
}
});
...................
...................
private void selectItemFragment(int position, String aa) {
Fragment fragment2;
FragmentManager fragmentManager = getSupportFragmentManager();
switch (position) {
case 0:
fragment2 = new HomeFragment();
break;
case 1:
fragment2 = new GalaxyFragment();
break;
case 2:
fragment2 = new ShareFragment();
break;
default:
fragment2 = new HomeFragment();
break;
}
check = position;
ffragm = fragment2;
fragmentManager.beginTransaction().replace(R.id.main_fragment_container, fragment2).addToBackStack(null).commit();
drawerList.setItemChecked(position, true);
setTitle(aa);
mDrawerLayout.closeDrawer(drawerList);
}
..........................
............................
@Override
public void onBackPressed() {
if (check == 0) {
finish();
} else {
check = 0;
Fragment fragment2;
FragmentManager fragmentManager = getSupportFragmentManager();
fragment2 = new HomeFragment();
fragmentManager.beginTransaction().replace(R.id.main_fragment_container, fragment2).addToBackStack(null).commit();
}
}
这里IM面临的问题, 考虑当用户Galaxyfragment类或任何其它片段类的内部工作,他导航到另一个片段类里面,然后他按后退按钮它直接导航到片段A.So,在这里我需要使用返回堆栈层次结构,最后到片段类并完成应用程序,请参阅下面的代码。
public class GalaxyFragment extends Fragment {
Context cc;
Button Addbutton;
public GalaxyFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.home_fragment, container, false);
ll1design = (LinearLayout) v.findViewById(R.id.llone);
Create_list = (Button) v.findViewById(R.id.submit);
Addbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
display_button.setVisibility(View.VISIBLE);
ll1design.setVisibility(View.GONE);
String value = "";
Bundle bundle = new Bundle();
bundle.putString("message", "" + value);
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = new ShareFragment();
fragment.setArguments(bundle);
fragmentManager.beginTransaction().replace(R.id.main_fragment_container, fragment).addToBackStack(null).commit();
}
});
return v;
}
}
所以这里
我需要(实现)使用后退按钮以正常工作为Galaxy2Fragment - > GalaxyFragment - > HomeFragment类。
任何人都可以给我建议如何在这些类型的案件上的这些Backbutton片段工作。欢迎提出建议。谢谢。
您可以使用fragmentManager.popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);这直接进入片段堆栈的底部。 – Triode
你的意思是你希望直接导航到第一个片段,并打开其他片段? –
@Triode谢谢,我尝试使用带有一些逻辑的POP_BACK_STACK_INCLUSIVE。 –