可扩展列表+单个活动中的其他片段

时间:2014-02-22 13:32:10

标签: android android-fragments

我想在一个布局中添加多个片段。但是,当我包含其他片段时,我会收到错误。请帮助。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:background="#F0F8FF"
    android:id="@+id/my_layout">
    <ExpandableListView
        android:id="@+id/lvExp"
        android:layout_width="250dp"
        android:layout_height="match_parent" >
    </ExpandableListView>

      <fragment
        android:id="@+id/fragw3"
        android:name="com.example.engineercalclist2.arrayHistory"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" /> 

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

我希望我理解正确,但在这里:

您可以使用Fragments,而不是直接从xml添加FrameLayout。然后在您的代码上,让我们说当您单击ExpandableListView项时,您可以更改片段。这是一个简单的例子。

将此添加到您的xml。

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</FrameLayout>

现在转到您的活动,声明Fragment

 Fragment fragment = null;

然后在您的OnItemClickListenerExpandableListViewfragment设置为您想要更改的片段。

 fragment = new Fragment_ToGo();

然后使用此

FragmentTransaction ft = getFragmentManager().beginTransaction();
getFragmentManager().beginTransaction().commit();
ft.replace(R.id.content_frame, fragment); 
ft.commit();    

修改

现在,我将使用here中的教程。我建议你先阅读,下面是我的解释。

首先,如果您的API早于11,则您的MainActivity(包含片段)应扩展为FragmentActivity。如果您使用的是API 11或更新版本,那么您可以继续使用。

现在,像这样创建你的片段。

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;

public class ArticleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

这将是您的Activity的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<fragment android:name="com.example.android.fragments.HeadlinesFragment"
          android:id="@+id/headlines_fragment"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="match_parent" />

<fragment android:name="com.example.android.fragments.ArticleFragment"
          android:id="@+id/article_fragment"
          android:layout_weight="2"
          android:layout_width="0dp"
          android:layout_height="match_parent" />

最后,你的MainActivity:

    import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
}

现在因为我不知道你得到了什么错误,所以我只能帮助你。当您发布Logcat时,我会再次编辑我的答案。