相同活动中的Android两个片段

我知道以下post: 在单个活动中使用多个片段

我正在寻找的是对特定问题的具体答案。 以下代码的结果是一个空白的FragmentActivity。 我在下面的代码中缺少什么来让它呈现一个包含两个片段的活动。 一个是空列表片段,另一个是包含输入框和水平布局按钮的片段(此布局可以在http://developer.android.com/training/basics/firstapp/starting-find – activity.html )我希望绝对放在屏幕的底部,固定高度约为25度。

的Manifest.xml

            

我的主要活动及其关联的application.xml文件。

 package com.my.package; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; public class Application extends FragmentActivity implements MessageListViewFragment.OnLineSelectedListener, SendMessageFragment.OnSendButtonPressed { MessageListViewFragment mMessageListFragment; SendMessageFragment mSendMessageFragment; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.application); mMessageListFragment = new MessageListViewFragment(); mSendMessageFragment = new SendMessageFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.add(R.id.message_fragment, mMessageListFragment); transaction.add(R.id.send_fragment, mSendMessageFragment); transaction.commit(); } @Override public void onListItemSelected(int position) { // TODO Auto-generated method stub } @Override public void onSendButtonPressed() { // TODO Auto-generated method stub } } 

布局:

     

现在为两个片段及其相关的xml文件:First Fragment(顶部列表片段)

 package com.my.package; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class MessageListViewFragment extends ListFragment { OnLineSelectedListener mCallback; @Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface. If not, it throws an exception try { mCallback = (OnLineSelectedListener)activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnLineSelectedListener"); } } // Container Activity must implement this interface public interface OnLineSelectedListener { public void onListItemSelected(int position); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.list_fragment, null); } } 

布局:

  

第二个片段(在底部)

 package com.my.package; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class SendMessageFragment extends Fragment { OnSendButtonPressed mCallback; // Container Activity must implement this interface public interface OnSendButtonPressed { public void onSendButtonPressed(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.input_fragment, null); } @Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface. If not, it throws an exception try { mCallback = (OnSendButtonPressed)activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } } } 

布局:

   

Solutions Collecting From Web of "相同活动中的Android两个片段"

请执行下列操作:

  1. Fragment更改为主活动XML中的FrameLayout
  2. 对于主XML文件中的FrameLayout (在步骤1中创建的),将layout_widthfill_parent更改为match_parent
  3. layout_heightfill_parent更改为wrap_content ,对于主XML文件中的FrameLayout (在步骤1中创建的那些)。
  4. FrameLayout更改为List Fragment XML中的ListView ,因为它是List。
  5. 将此LisView的id更改为@android:id/list ,因为ListFragment需要它。

然后让我知道,干杯。

编辑,也是这些:

  1. 更改return inflater.inflate(R.layout.list_fragment, null); return inflater.inflate(R.layout.list_fragment, container, false);
  2. 更改return inflater.inflate(R.layout.input_fragment, null); return inflater.inflate(R.layout.input_fragment, container, false);

编辑:

使您的主要活动XML文件如下:

     

我拿出了android:name"..."因为我不知道它是什么,也不知道它是什么,如果你知道它确实做了什么,只需加回去,应该没问题。