public class TestPane extends JPanel {
private int tick;
public TestPane() {
setLayout(new GridBagLayout());
JButton btn = new JButton("Click");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tick++;
if ((tick % 2) != 0) {
setBackground(Color.RED);
} else {
setBackground(null);
}
}
});
add(btn);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
}
您好,
我正在使用新工具栏并显示在我的片段中。但是,我希望能够通过Android studio 1.3
com.android.support:appcompat-v7:22.1.1
导航回到上一个片段。但是,在onCreateView的片段中没有这样的功能。这适用于Activity,但在片段中不起作用。
无论如何让工具栏显示setHomeButtonEnabled,以便显示一个箭头,以便用户可以回头。
setHomeButtonEnabled(true)
在我的活动中,我正在扩展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;
}
}
并使用AppCompatActivity
appcompat-v7:22.1.1
正如您在图像上看到的那样,工具栏左侧没有任何箭头以允许用户回头。
答案 0 :(得分:7)
使用
appCompatActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
而不是
appCompatActivity.getActionBar().setDisplayHomeAsUpEnabled(true);
答案 1 :(得分:1)
如果您的片段中启用了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调用。
请阅读此处的文档以获取更多信息。关于全班