【目的】
元のactivityからtablayoutをもつactivityに値を渡し、そこで表示されるfragmentにデータを渡したい。
今回の質問は、一応動作はできたものの、何か問題がないかをお答えいただきたいといいのが目的です。
【方法】
元のactivityからtablayoutをもつactivityにintentを用いてデータを渡し、そこでSharedPreferencesを用いてデータを保持し、fragment側でそのデータを受け取る形式をとりました。
【コード】
MainActivity(元のactivity)
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { val datatoTab = editText.text.toString().toInt() startActivity<TabActivity>("ID" to datatoTab) } } }
TabActivity
class TabActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_tab) val receive = intent.getIntExtra("ID" , 0) val pref = this.getSharedPreferences("result_ID", Context.MODE_PRIVATE) val e =pref.edit() e.putInt("DATA", receive) e.apply() //ViewPagerに先ほど作成したAdapterのインスタンスを渡してあげる styleviewpager.adapter = FGadapter(supportFragmentManager, this) //TabLayoutにViewPagerのインスタンスを渡すと自動的に実装してくれる tabTab01.setupWithViewPager(styleviewpager) //Tabへの処理はsetupWithViewPagerをした後だったら可能 //ここではタブ名とアイコンを設定している val tab1 = tabTab01.getTabAt(0) tab1?.text = "A" val tab2 = tabTab01.getTabAt(1) tab2?.text = "B" } }
basefragment1
class basefragment1: Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.basefragment1, null) } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) val pref = activity?.getSharedPreferences("result_ID", Context.MODE_PRIVATE) val data = pref?.getInt("DATA", 1) textView.text = data.toString() } }
basefragment2
class basefragment2: Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.basefragment2, null) } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) val pref = activity?.getSharedPreferences("result_ID", Context.MODE_PRIVATE) val data = pref?.getInt("DATA", 1) textView2.text = data.toString() }}
初心者なので、どのようなコードが問題があるかどうかがわかりません。特にfragmentに関しては中々理解が追い付いていない状態で、tablayoutに関しても初めて使用している状態です。
よろしければ問題ないかどうか、アドバイス等いただけると幸いです。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。