5

我正在使用 Compatibility Package,修订版 4 将 Fragments 添加到我的 Gingerbread 应用程序中。没有记录错误,但是片段不再显示在屏幕上(在我开始清理它并添加方法之前曾经有一次!)。底部的 Fragment 有望封装我的导航方法,例如“goHome”和“goCart”,并放置在所有屏幕上。
我尝试将元素添加到我的布局中,并收到了 android.view 的可怕 Classnotfound 错误。使用这种方法,我已经走得更远了。

我的日志显示片段已添加。这是片段:

public class BottomFragment extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    View v = inflater.inflate(R.layout.bottom_nav, container, false);
    Log.v("BottomFragment","onCreate after inflate");
    /*
    ImageView find_img = (ImageView)v.findViewById(R.id.bottom_find_image);

    find_img.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.v("BottomFragment.OnClickListener"," with Find clicked");
            findRegistry();
        }
    });
     */
    // Inflate the layout for this fragment
    return v;

日志消息如上所示。这是添加片段的活动:

public class StartActivity extends FragmentActivity {

public static Context appContext;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.find_main);

    appContext = getApplicationContext();

    // Create new fragment and transaction
    BottomFragment newFragment = new BottomFragment();

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.add( R.id.frame_bottom_frag, newFragment );
     // Commit the transaction
    transaction.commit();
}

这是 Fragment 使用的 bottom_nav.xml。

<RelativeLayout
    android:id="@+id/bottom_nav"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

    <ImageView
            android:layout_height="wrap_content"
            android:layout_width="60dp"
            android:id="@+id/bottom_home_image"
            android:src="@drawable/home"
            android:clickable="true"
            android:onClick="goHome"
            />

    <ImageView
            android:layout_height="wrap_content"
            android:layout_width="60dp"
            android:id="@+id/bottom_shopping_cart_image"
            android:src="@drawable/shopping_cart"
            android:clickable="true"
            android:onClick="goCart"
            />
</LinearLayout>
</RelativeLayout>

这是 Activity 布局 find_main:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
     android:layout_height="fill_parent" android:layout_gravity="center">
<TableLayout
    android:id="@+id/main_screen"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >      

<TableRow android:padding="20dip">

    <ImageView
            android:layout_height="60dip"
            android:layout_width="60dip"
            android:id="@+id/home_image"
            android:src="@drawable/create"

            android:clickable="true"
            android:onClick="goHome"
            />

        <TextView
                android:id="@+id/home_text"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="@string/home" android:textAppearance="?android:attr/textAppearanceLarge"
                android:textStyle="bold"
                android:layout_toRightOf="@id/home_image"

                android:clickable="true"
                android:onClick="goCart"/>
</TableRow>
</TableLayout>   
<FrameLayout android:name="com.marcole.gingerbread.grw.BottomFragment"
          android:id="@+id/frame_bottom_frag"
          android:layout_weight="2"
          android:layout_width="0dp"
          android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>

继承人的一些日志:

11-02 16:20:57.650: INFO/ActivityManager(61): Start proc com.marcole.gingerbread.grw for     activity com.marcole.gingerbread.grw/.StartActivity: pid=522 uid=10041 gids={3003}
11-02 16:20:57.690: INFO/dalvikvm(513): JNI: AttachCurrentThread (from ???.???)
11-02 16:20:57.690: INFO/AndroidRuntime(513): NOTE: attach of thread 'Binder Thread #3' failed
11-02 16:20:58.090: WARN/ActivityThread(522): Application com.marcole.gingerbread.grw is waiting for the debugger on port 8100...
11-02 16:20:58.100: INFO/System.out(522): Sending WAIT chunk
11-02 16:20:58.110: INFO/dalvikvm(522): Debugger is active
11-02 16:20:58.310: INFO/System.out(522): Debugger has connected
11-02 16:20:58.310: INFO/System.out(522): waiting for debugger to settle...
11-02 16:20:58.510: INFO/System.out(522): waiting for debugger to settle...
11-02 16:20:58.721: INFO/System.out(522): waiting for debugger to settle...
11-02 16:20:58.920: INFO/System.out(522): waiting for debugger to settle...
11-02 16:20:59.121: INFO/System.out(522): waiting for debugger to settle...
11-02 16:20:59.322: INFO/System.out(522): waiting for debugger to settle...
11-02 16:20:59.522: INFO/System.out(522): waiting for debugger to settle...
11-02 16:20:59.721: INFO/System.out(522): debugger has settled (1408)
11-02 16:21:00.771: DEBUG/dalvikvm(522): GC_EXTERNAL_ALLOC freed 59K, 49% free 2757K/5379K, external 2121K/2137K, paused 62ms
11-02 16:21:00.851: VERBOSE/BottomFragment(522): onCreate after inflate
11-02 16:21:01.521: INFO/ActivityManager(61): Displayed com.marcole.gingerbread.grw/.StartActivity: +3s935ms

任何帮助将不胜感激谢谢!

4

1 回答 1

0

我发现了问题。我需要将 FrameLayout 移动到 TableLayout 内部。从:

</TableLayout>   
    <FrameLayout android:name="com.marcole.gingerbread.grw.BottomFragment"
      android:id="@+id/frame_bottom_frag"
      android:layout_weight="2"
      android:layout_width="0dp"
      android:layout_height="match_parent">
   </FrameLayout>
</LinearLayout>

至:

</TableRow>
    <FrameLayout android:name="com.marcole.gingerbread.grw.BottomFragment"
                 android:id="@+id/frame_bottom_frag"

                 android:layout_width="wrap_content"
                 android:gravity="bottom"
                 android:layout_centerHorizontal="true"
                 android:layout_height="wrap_content">
    </FrameLayout>
</TableLayout>
</LinearLayout>

现在,如果我能让它一直走到底部!

于 2012-11-02T17:33:19.607 回答