我第一次见到 Fragment 。所以这对我来说有点复杂。我正在android-hive阅读教程。但我无法理解这一点。有些事情我不明白。 有oneFragment(),twoFragment()......但是我无法启动它们。所以,请完成这个link中的任何一个... oneFragmemt()或twoFragment()。我会很高兴的。帮帮我...
答案 0 :(得分:1)
Muhamar,你总是需要在一个活动中启动片段。如果你的片段1有这段代码:
public class OneFragment extends Fragment{
public OneFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_one, container, false);
}
}
然后在主要活动中,您可以像教程中所说的那样启动:
public class MainActivity extends AppCompatActivity {
//blabla
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//blablabla
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new OneFragment(), "ONE");
//blabla
viewPager.setAdapter(adapter);
}
在这种情况下,主要活动是使用适配器来显示多个片段,因此您应该在代码中添加适配器的文件,您也可以在教程中找到它。
<强>更新强>
如果您不想使用适配器初始化片段,则必须做两件事来初始化片段:
1)在主要活动的布局中放置片段布局:,你必须包含一个片段并识别它(在本例中为android:id="@+id/headlines_fragment"
):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment android:name="com.example.android.fragments.HeadlinesFragment"
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
2)在您的主要活动中插入片段,使用以下代码,您可以在活动中添加评论:
public class MainActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news_articles);
OneFragment firstFragment = new OneFragment();
// In case this activity was started with special instructions from an
// Intent, pass the Intent's extras to the fragment as arguments
firstFragment.setArguments(getIntent().getExtras());
// Add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
.add(R.id.headlines_fragment, firstFragment).commit();
}
}
更新2:从适配器初始化,您只需将其添加到主要活动上,如教程所述。在主要活动上添加此类:
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
希望它有所帮助;)