Я встречаюсь с Фрагмент в первый раз. Так что это немного сложно для меня. Я читаю учебник по адресу android-hive. Но я не понимаю смысла. Я чего-то не понимаю. Есть одинFragment(), twoFragment() ... Но я не могу их инициировать. Итак, пожалуйста, заполните любой из этих ... oneFragmemt() или twoFragment() из этого link. Я буду так рад. Помогите мне ...Инициализация Фракции Android
ответ
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);
}
В этом случае основным видом деятельности является использование адаптера для отображения более один фрагмент, поэтому вы должны иметь в своем коде больше файла адаптера, который вы также найдете в учебнике.
UPDATE:
, если вы не хотите, чтобы инициализировать фрагмент с адаптером, вы должны сделать две вещи, чтобы инициализировать фрагмент:
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) Вставьте фрагмент в вашей основной деятельности: с помощью следующего кода вы можете добавить freagment в своей деятельности:
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();
}
}
UPDATE 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);
}
}
Надеется, что это помогает;)
И вот моя проблема, инициализация фрагментов в активность. Я не знаю, как инициализировать фрагменты в активности. Попробуете? –
обновленный ответ;) – Alvaro
И если я инициализирую ароматный в адаптер, то как я это сделаю? –
Первый канал откажет, и я понятия не имею, что вы говорите. – rekire
Прошу прощения за неработающую ссылку. Но см. Вторую ссылку и прочитайте учебник. Тогда вы поймете. –
Я хорошо знаю фрагменты, поэтому я не хочу читать его полностью. Как вы пытаетесь инициировать фрагменты? Возможно, это дает мне представление о вашей проблеме. – rekire