片段中工具栏上的 setHomeButtonEnabled
setHomeButtonEnabled on toolbar in a fragment
Android studio 1.3
com.android.support:appcompat-v7:22.1.1
您好,
我正在使用新的工具栏并在我的片段中显示。但是,我希望能够通过 setHomeButtonEnabled(true)
导航回到上一个片段。但是,在我的 onCreateView 片段中没有这样的功能。这在 Activity 中有效,但在片段中无效。
是否可以让工具栏显示 setHomeButtonEnabled 以便显示箭头以便用户可以导航返回。
public class FileTransferFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_file_transfer, container, false);
final Toolbar toolbar = (Toolbar)view.findViewById(R.id.app_bar);
AppCompatActivity appCompatActivity = (AppCompatActivity)getActivity();
appCompatActivity.setSupportActionBar(toolbar);
/* TRIED THIS BUT DIDN'T WORK */
appCompatActivity.getActionBar().setHomeButtonEnabled(true);
appCompatActivity.getActionBar().setDisplayHomeAsUpEnabled(true);
return view;
}
}
在我的 Activity 中,我正在扩展 AppCompatActivity
并使用 appcompat-v7:22.1.1
public class FileTransferActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file_transfer);
if(savedInstanceState == null) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container,
FileTransferFragment.getFileTransferFragment(1234), "FileTransferFragment");
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.commit();
}
}
}
正如您在图像中看到的那样,工具栏左侧没有允许用户向后导航的箭头。
使用
appCompatActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
而不是
appCompatActivity.getActionBar().setDisplayHomeAsUpEnabled(true);
如果您在片段中启用了 actionBar,那是件好事。目前,navigationDrawer 图标,称为汉堡包图标,如果要启用它,
您的片段中需要以下方法。
首先创建实例。
private ActionBarDrawerToggle drawerToggle;
private DrawerLayout mDrawerLayout;
您需要以上实例。
drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close){
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
//Todo
//you don't have to write here anything to enable icon
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
//Todo
//you dont have to write here anything to enable icon
}
};
mDrawerLayout.setDrawerListener(drawerToggle);
在此之后,您的片段应该可以通过某种方式在抽屉关闭或打开时通知 mainActivity
你可以通过 syncState() 方法做到这一点。
mDrawerLayout.post(new Runnable(){
@Override
public void run(){
//enable hamburger icon
drawerToggle.syncState();
}
});
您可以在片段中将这整个实现为单独的方法并从 main 中调用。
阅读此处的文档以获取更多信息。关于整个class
Android studio 1.3
com.android.support:appcompat-v7:22.1.1
您好,
我正在使用新的工具栏并在我的片段中显示。但是,我希望能够通过 setHomeButtonEnabled(true)
导航回到上一个片段。但是,在我的 onCreateView 片段中没有这样的功能。这在 Activity 中有效,但在片段中无效。
是否可以让工具栏显示 setHomeButtonEnabled 以便显示箭头以便用户可以导航返回。
public class FileTransferFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_file_transfer, container, false);
final Toolbar toolbar = (Toolbar)view.findViewById(R.id.app_bar);
AppCompatActivity appCompatActivity = (AppCompatActivity)getActivity();
appCompatActivity.setSupportActionBar(toolbar);
/* TRIED THIS BUT DIDN'T WORK */
appCompatActivity.getActionBar().setHomeButtonEnabled(true);
appCompatActivity.getActionBar().setDisplayHomeAsUpEnabled(true);
return view;
}
}
在我的 Activity 中,我正在扩展 AppCompatActivity
并使用 appcompat-v7:22.1.1
public class FileTransferActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file_transfer);
if(savedInstanceState == null) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container,
FileTransferFragment.getFileTransferFragment(1234), "FileTransferFragment");
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.commit();
}
}
}
正如您在图像中看到的那样,工具栏左侧没有允许用户向后导航的箭头。
使用
appCompatActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
而不是
appCompatActivity.getActionBar().setDisplayHomeAsUpEnabled(true);
如果您在片段中启用了 actionBar,那是件好事。目前,navigationDrawer 图标,称为汉堡包图标,如果要启用它, 您的片段中需要以下方法。
首先创建实例。
private ActionBarDrawerToggle drawerToggle;
private DrawerLayout mDrawerLayout;
您需要以上实例。
drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close){
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
//Todo
//you don't have to write here anything to enable icon
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
//Todo
//you dont have to write here anything to enable icon
}
};
mDrawerLayout.setDrawerListener(drawerToggle);
在此之后,您的片段应该可以通过某种方式在抽屉关闭或打开时通知 mainActivity 你可以通过 syncState() 方法做到这一点。
mDrawerLayout.post(new Runnable(){
@Override
public void run(){
//enable hamburger icon
drawerToggle.syncState();
}
});
您可以在片段中将这整个实现为单独的方法并从 main 中调用。
阅读此处的文档以获取更多信息。关于整个class