みなさんこんにちは、
Javaを用いて趣味でProgramingをしているものです。
AndroidStudioを用いてアプリケーションを作成しています。
どうにもたち行かない現象に出会ってしまい皆様のお力をお借りしたく質問させていただきました。
どうぞお力添えよろしくお願いいたします。
問題の内容は表題のとおりです。
Fragmentの中にあるTextViewやImageViewにsetTextやsetImageResourceといったアクションをしても結果が反映されない状態となってしまいました。
問題点を指摘いただければと思います。以下詳細を記述させていただきます。
Activityの中にPagerを入れ、mFragmentA, mFragmentBの2つをTabViewのように表示することを目標に、以下の4つのクラスを作成いたしました。
・mActivity (extends AppCompatActivity implements OnFragmentInteractionListener)
・mFragmentA (extends Fragment)
・mFragmentB (extends Fragment)
・mFragmentStatePagerAdapter (extends FragmentStatePagerAdapter)
コードの内容は下記のとおりです。
なお頭にあります宣言などは省略させていただいています。
###mActivity
Java
1 2public class mActivity extends AppCompatActivity implements mFragment1.OnFragmentInteractionListener, mFragment2.OnFragmentInteractionListener { 3 4 ViewPager viewPager; 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 if (savedInstanceState != null) { 9 return; 10 } 11 FragmentManager fm = getSupportFragmentManager(); 12 setContentView(R.layout.activity_m); 13 14 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 15 setSupportActionBar(toolbar); 16 viewPager = (ViewPager)findViewById(R.id.pager); 17 mFragmentStatePagerAdapter adapter = new mFragmentStatePagerAdapter(fm); 18 viewPager.setAdapter(adapter); 19 } 20 21 @Override 22 public void onFragmentInteraction(Uri uri) { 23 } 24 25} 26 27
###mFragmentA(mFragmentBも同様)
Java
1 2public class mFragmentA extends Fragment { 3 4private OnFragmentInteractionListener mListener; 5private static final String ARG_PARAM_A = "resourceId" 6private int resourceId; 7 8 public mFragmentA() { 9 } 10 public static mFragmentA newInstance(int resId) { 11 mFragmentA fragment = new mFragmntA(); 12 Bundle args = new Bundle(); 13 args.putInt(ARG_PARAM_A, resId); 14 fragment.setArguments(args); 15 return fragment; 16 } 17 18 @Override 19 public void onCreate(Bundle savedInstanceState) { 20 resourceId = getArguments().getInt(ARG_PARAM_A); 21 super.onCreate(savedInstanceState); 22 } 23 24 @Override 25 public View onCreateView(LayoutInflater inflater, ViewGroup container, 26 Bundle savedInstanceState) { 27 View rootView = inflater.inflate(R.layout.fragment_writer_list, container, false); 28 TextView textView = (TextView)cl.findViewById(resourceId); 29 textView.setText("hogehogehogehoge"); 30 return inflater.inflate(R.layout.m_fragment_A, container, false); 31 } 32 33 /////////中略//////// 34 35 public interface OnFragmentInteractionListener { 36 // TODO: Update argument type and name 37 void onFragmentInteraction(Uri uri); 38 } 39} 40
###mFragmentStatePagerAdapter
Java
1 2public class mFragmentStatePagerAdapter extends FragmentStatePagerAdapter { 3 int resourceId; 4 5 public mFragmentStatePagerAdapter(FragmentManager fm) { 6 super(fm); 7 resourceId = ..... 8 } 9 10 @Override 11 public Fragment getItem(int position) { 12 switch (position){ 13 case 0: 14 return mFragmentA.newInstance(resourceId); 15 case 1: 16 return mFragmentB.newInstance(resourceId); 17 } 18 return null; 19 } 20 21 @Override 22 public int getCount() { 23 return 2; 24 } 25 26 public CharSequence getPageTitle(int position){ 27 switch (position){ 28 case 0: 29 return "PageA"; 30 case 1: 31 return "PageB"; 32 } 33 return null; 34 } 35}
詳細は以上です。
簡潔にしていますが、ほぼ上記のようにコーディングするとsetTextが反映されずにxmlファイルで設定されたテキストが表示されてしまいます。
Log.dを用いて、Bundlleにて値が受け渡されていることは確認いたしました。getTextによってテキストがセットされていることも確認いたしました。そのため「値が入力されたが初期化されて戻ってしまった」「setTextのタイミングが悪く、setが反映されていない」のどちらかではないのかなと考えていました。
Fragmentのライフサイクルを学ぶのがよいのでしょうか?
何を勉強すれば解決までいけるのかもわからず、少し手詰まってしまいました。
大変長文で申し訳ありませんが、
皆様のお力添えどうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/28 13:02