片段中工具栏上的setHomeButtonEnabled

时间:2015-05-29 11:36:15

标签: android android-fragments android-toolbar

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

正如您在图像上看到的那样,工具栏左侧没有任何箭头以允许用户回头。 enter image description here

2 个答案:

答案 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调用。

请阅读此处的文档以获取更多信息。关于全班

ActionBarDrawerToggle