2017-02-02 5 views
0

現在、通常のアクティビティからタブ付きアクティビティ(フラグメント)でアプリケーションを変更していますが、これまではアクティビティが完了するとアプリケーションの適切なレイアウトを読み込むことができましたしかし、onCreateViewメソッドでコードを実行すると、そこにあるすべての行をデバッグできるようになりますが、フラグメントによって示されるレイアウトには何の影響もありません。このコードは、とりわけ、Spinners 。フラグメントの内容はロードされますが、コードはそれを更新しません

私はどこかに間違ったことをしていると私は理解しています。私はそれが何であるか、起こっている場所を正確に把握できません。

public class myClass extends AppCompatActivity { 
private SectionsPagerAdapter mSectionsPagerAdapter; 
private ViewPager mViewPager; 
private TabLayout mTabLayout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_myclass); 
    mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager()); 
    mViewPager = (ViewPager) findViewById(R.id.container); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 
    mTabLayout = (TabLayout) findViewById(R.id.tabs); 
    mTabLayout.setupWithViewPager(mViewPager); 
    myClass_Fragment ids = new myClass_Fragment(); 
    FragmentManager fm = getFragmentManager(); 
    fm.beginTransaction().replace(R.id.main_content, ids, "fragment one").commit(); 
} 

public static class PlaceholderFragment extends Fragment { 
    public PlaceholderFragment() { 
    } 

public static PlaceholderFragment newInstance() { 
     PlaceholderFragment fragment = new PlaceholderFragment(); 
     return fragment; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.ids, container, false); 
     return rootView; 
    } 
} 

public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return PlaceholderFragment.newInstance(position + 1); 
    } 

    @Override 
    public int getCount() { 
     return 2; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "IDS"; 
      case 1: 
       return "Other"; 
     } 
     return null; 
    } 
} 
} 

とフラグメント:

public class myClass_Fragment extends Fragment { 
public myClass_Fragment() { 

} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
View rootView = inflater.inflate(R.layout.ids, container, false); 
// code that updates views such as spinners 
// everything in here works, I can see the content getting retrieved by debugging individual lines 
    return rootView; 
} 
} 

すべてのビューがフラグメントのレイアウトで、すべてが示されているアプリの負荷一度宣言しますが、のonCreateView方法で取得し得る値のどれとされています断片。

私はこれがかなり問題だと思いますが、私は何が間違っているのか、それを修正するために何ができるのかを知りたいと思います。

要求され、activity_myclass.xmlとして:サイドノートとして

<android.support.design.widget.CoordinatorLayout  xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context=".myClass"> 

<android.support.design.widget.AppBarLayout 
android:id="@+id/appbar" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    app:layout_scrollFlags="scroll|enterAlways"> 
</android.support.v7.widget.Toolbar> 
<android.support.design.widget.TabLayout 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:tabMode="fixed" 
    app:tabGravity="fill"/> 
</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
android:id="@+id/container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
</android.support.design.widget.CoordinatorLayout> 

、レイアウトのこの種の変更が開始される前にすべてがアプリに罰金働いていたので、問題は、この新しいでなければなりません実装。

+0

PlaceholderFragmentのnewInstance()メソッドはどこにありますか? –

+0

申し訳ありませんが、質問を更新しました。 – user1676874

+1

activity_myclass.xmlレイアウトファイルも投稿できますか? –

答えて

0

これはあなたの要件を満たすことができれば、私は知りませんが、あなたがこのような方法で試すことができます。

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context=".myClass"> 

    <FrameLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

    ... 

は、上記でframeLayout内部フラグメントを交換しようとすると、内部の景色を見ることができます断片?

+0

あなたが提案したFrameLayoutをfm.beginTransaction()に追加しました。replace(R.id.fragment_container、ids、 "fragment one")。しかし、私はonCreateViewメソッドで行われたすべての変更の前に、同じ基本レイアウトを取得しています。 – user1676874

+0

上記のコードでは、同じレイアウトの2倍の膨らみがあります:R.layout.ids、変更しようとしているフラグメントのレイアウト。 –

関連する問題