我正在處理導航抽屜和碎片,目前我正面臨圖像問題考慮(甜甜圈)是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。 –