【发布时间】:2014-07-02 10:29:18
【问题描述】:
我是第一次尝试片段。我已阅读所有开发人员文档,但仍然无法弄清楚为什么我的片段没有附加到主要活动。 以下是我的代码
我只得到我的主要活动的布局。没有片段的布局
主要活动 xml 文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relative_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:context="com.attendancerecord.HomePage"
tools:ignore="MergeRootFrame">
<HorizontalScrollView
android:id="@+id/scroll2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:layout_marginTop="200dp">
</HorizontalScrollView>
</RelativeLayout>
我的 main.java 文件
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
HomePage_Fragment myfragment = new HomePage_Fragment();
ft.add(R.id.scroll2, myfragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
我的 fragment.java 文件
public class HomePage_Fragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SQLiteDatabase db = getActivity().openOrCreateDatabase("DATABASE",android.content.Context.MODE_PRIVATE ,null);
db.execSQL("CREATE TABLE IF NOT EXISTS ATTENDANCE_RECORD(NAME VARCHAR, ATTENDED integer, " +
"TOTAL integer, BUNKS integer, PERCENTAGE float)");
for(int i=0;i<num_subjects;i++){ //initializing of num_subjects is done (long code)
db.execSQL("INSERT INTO ATTENDANCE_RECORD VALUES( '"+name_subjects[i]+"', "+0+","+0+", "+0+", "+0.0+" )");
}
}
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstance){
View view= inflater.inflate(R.layout.fragment_home_page,null);
TableLayout tableLayout = (TableLayout)view.findViewById(R.id.record);
TableRow tableRow;
TextView textView;
SQLiteDatabase db = getActivity().openOrCreateDatabase("DATABASE",android.content.Context.MODE_PRIVATE ,null);
Cursor c=db.rawQuery("SELECT * FROM ATTENDANCE_RECORD", null);
c.moveToFirst();
for(int i=0;i<num_subjects;i++){
tableRow = new TableRow(getActivity());
for(int j=0;j<5;j++){
textView = new TextView(getActivity());
switch(j){
case 0: textView.setText(c.getString(c.getColumnIndex("NAME")));
break;
case 1: textView.setText(String.valueOf(c.getString(c.getColumnIndex("ATTENDED"))));
break;
case 2: textView.setText(String.valueOf(c.getInt(c.getColumnIndex("TOTAL"))));
break;
case 3: textView.setText(String.valueOf(c.getInt(c.getColumnIndex("BUNKS"))));
break;
case 4: textView.setText(String.valueOf(c.getFloat(c.getColumnIndex("PERCENTAGE"))));
break;
}
textView.setPadding(15, 25, 15, 25);
tableRow.addView(textView, new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT, 0));
}
c.moveToNext();
tableLayout.addView(tableRow);
}
c.close();
return inflater.inflate(R.layout.fragment_home_page,container,false);
}
}
我的 fragment_home_page.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:context="com.attendancerecord.HomePage$PlaceholderFragment" >
<TableLayout
android:id="@+id/record"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true">
</TableLayout>
</RelativeLayout>
【问题讨论】:
标签: java android layout android-fragments layout-inflater