互換パッケージ、リビジョン 4 を使用してフラグメントを 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>
アクティビティ レイアウトの 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
どんな助けでも感謝します!