2016-03-20 7 views
1

私はのフラグメントと初めて会います。だから私には少し複雑です。私はandroid-hiveでチュートリアルを読んでいます。しかし、私はある点を理解することができません。私が理解していないことがあります。 oneFragment()、twoFragment()...がありますが、開始できません。したがって、linkからoneFrameemt()またはtwoFragment()のいずれかを完了してください。私はとても喜ぶでしょう。助けてください...Androidフラグメントの初期化

+0

最初のリンクが壊れている)と私は、あなたが話しているかわかりません。 – rekire

+0

壊れたリンクは申し訳ありません。しかし、2番目のリンクを参照し、チュートリアルを読んでください。あなたはそれを理解するでしょう。 –

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

1つのフラグメントであるため、コード内にアダプターのファイルが多くなければなりません。アダプターのファイルはチュートリアルにもあります。

UPDATE:

1)レイアウトでの断片を入れて:を使用すると、アダプタにフラグメントをinitalizeしたくない場合、あなたはその断片を初期化するために二つのことをしなければならない

あなたの主な活動のレイアウトでは、フラグメントが含まれており、(この例では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

そして、私はそれをどうしたらいいでしょうか? –

関連する問題