如何在Android中的ActionBarActivity中显示ListFragment?

时间:2014-08-21 12:23:40

标签: java android android-fragments android-listfragment listactivity

我想将FileChooser(←我用这个)添加到我的应用程序(我的主要活动扩展ActionBarActivity)。我尝试将FileChooser更改为Fragment或ListFragment。 因为我想用户可以选择页面(我用抽屉选择片段)。

我的应用程序的结构如图:enter link description here(因为我不能在这里发布图片)

但是如果我改为Fragment它就行不通了。 如果我改为ListFragment它会工作,但它显示在最后一个片段如图片:它在上面的图片旁边(请再次点击链接,因为我不能发布这么多的链接)

  

的AndroidManifest.xml:   机器人:的minSdkVersion = “11”   机器人:targetSdkVersion = “21”

我的selectitem()代码:

private void selectItem(int position) {        
    Fragment fragment = null;
    switch (position) {
    case 0:
        Toast.makeText(getApplicationContext(),"case 0", Toast.LENGTH_SHORT).show();
        fragment = new First();
        break;
    case 1:            
        Toast.makeText(getApplicationContext(),"case 1", Toast.LENGTH_SHORT).show();            
        fragment = new Second();
        break;          
    case 2:
        Toast.makeText(getApplicationContext(),"case 2", Toast.LENGTH_SHORT).show();
         fragment = new Third();
         break;        
    }

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.content_frame, fragment);
    fragmentTransaction.addToBackStack("home");
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    fragmentTransaction.commit();


    mDrawerList.setItemChecked(position, true);
    setTitle(mPlanetTitles[position]);
    mDrawerLayout.closeDrawer(mDrawerList);
}

我的问题:

  1. 如何将FileChooser从ListActivity更改为Fragment或ListFragment?(如果有人有其他方法,请告诉我)
  2. 如何在用户点击按钮(在First的布局中)后显示它,并且不会看到最后片段的布局? (如果它可以更改为Fragment或ListFragment)
  3. continue2,如何将数据传输到其他片段?
  4. 哪个导入更好(在ActionBarActivity中)? (android.app.Fragment或android.support.v4.app.Fragment)
  5. 感谢所有阅读我问题的人

1 个答案:

答案 0 :(得分:1)

我将从下到上开始。

  

哪个导入更好(在ActionBarActivity中)?   (android.app.Fragment或android.support.v4.app.Fragment)

答案:都没有。这取决于您的工作和您希望符合的API级别。我倾向于使用android.support.v4.app.Fragment而不是标准的android.app.fragment,但这只是偏好。

  

如何在用户点击按钮(在First's布局中)和之后显示它   不会看到最后片段的布局? (如果它可以改为Fragment或   ListFragment)continue2,如何将数据传输到其他片段?

答案:listfragment是一种带有一些额外方法的片段。要使用listfragment替换标准片段,您将执行相同的操作。

FragmentTransaction ft = getFragmentManager.beginTransaction;

ft.replace(containerId, new MyListFragment or Fragment)
                         .commit();

根据片段之间的移动数据,最简单的方法是使用Bundle。

Bundle data = new Bundle();
data.putInt("myInt", 1);
data.putString("myString" "hello java")
myFragment.setArguments(data);

在您的Fragment类中,您将从这个数据包中获取数据。

Bundle data = getArguments();
int myInt = data.getInt("myInt");
String myString = data.getString("myString");

  

如何将FileChooser从ListActivity更改为Fragment或   ListFragment?(如果有人有其他方法,请告诉我)

您是否正在考虑在Fragment类中实现FileChooser类,或者您想要通过它实际说明什么?

我的selectFragment方法如下所示:

public Fragment getFragment(int pos){
    switch(pos) {
        case 1:
            return new FragmentOne();
        case 2:
            return new FragmentTwo();
        case 3:
            return new FragmentThree();
        default:
            return FragmentOne();


    }
}