2016-03-20 2 views
1

Я встречаюсь с Фрагмент в первый раз. Так что это немного сложно для меня. Я читаю учебник по адресу android-hive. Но я не понимаю смысла. Я чего-то не понимаю. Есть одинFragment(), twoFragment() ... Но я не могу их инициировать. Итак, пожалуйста, заполните любой из этих ... oneFragmemt() или twoFragment() из этого link. Я буду так рад. Помогите мне ...Инициализация Фракции Android

+0

Первый канал откажет, и я понятия не имею, что вы говорите. – rekire

+0

Прошу прощения за неработающую ссылку. Но см. Вторую ссылку и прочитайте учебник. Тогда вы поймете. –

+0

Я хорошо знаю фрагменты, поэтому я не хочу читать его полностью. Как вы пытаетесь инициировать фрагменты? Возможно, это дает мне представление о вашей проблеме. – rekire

ответ

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); 
} 

В этом случае основным видом деятельности является использование адаптера для отображения более один фрагмент, поэтому вы должны иметь в своем коде больше файла адаптера, который вы также найдете в учебнике.

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); 
     } 
    } 

Надеется, что это помогает;)

+0

И вот моя проблема, инициализация фрагментов в активность. Я не знаю, как инициализировать фрагменты в активности. Попробуете? –

+0

обновленный ответ;) – Alvaro

+0

И если я инициализирую ароматный в адаптер, то как я это сделаю? –