我试图了解如何使用片段,但由于某些原因它们无法正常工作。你能解释一下如何使用它们,或者至少告诉我我的代码有什么问题。
主要活动:
package test.testing;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import layout.BlankFragment;
public class MainActivity extends FragmentActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
BlankFragment fragment = new BlankFragment();
fragmentTransaction.add(R.id.main, fragment);
fragmentTransaction.commit();
}
}
Mainactivity xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="test.testing.MainActivity">
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/main"/>
</LinearLayout>
BlankFragment:
package layout;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import test.testing.R;
/**
* A simple {@link Fragment} subclass.
*/
public class BlankFragment extends Fragment {
public BlankFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
}
BlankFragment XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingLeft="20dp"
android:paddingBottom="20dp"
android:background="#000000"
tools:context="layout.BlankFragment">
<!-- TODO: Update blank fragment layout -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/graycircle"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="20dp"
android:gravity="center_vertical"
android:textColor="#ffffff"
android:text="Event 1"/>
</LinearLayout>
</LinearLayout>
谢谢
答案 0 :(得分:1)
在mainactivity.xml中
改变这个:
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/main"/>
到
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/main"/>
这是有效的,因为当你使用 fragment 标签时,你需要在xml本身设置那个类,但是当你以编程方式创建一个像你在这种情况下那样的片段时,XML可以有只有一个容器中的片段膨胀。
-
您在MainActivity中添加片段的代码不正确。您正在使用支持片段,因此您应该使用getSupportFragmentManager()
在代码中进行以下更改。
更改MainActivity.java的import语句:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
更改片段的代码更改:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
BlankFragment done = new BlankFragment();
fragmentTransaction.add(R.id.main, done, "frag");
fragmentTransaction.commit();
我在这里修改了你的代码。 http://pastebin.com/BEqExkbN