表示領域を確保
activity_main_list.xml
をConstraintLayoutで見ると以下のようになっています。
- 表示させたい領域にFrameLayoutを追加
- FrameLayoutのIDを設定(例ではframeID
としています)
Fragmentを追加
fragment_main_list.xml
をConstraintLayoutで見ると以下のようになっています。
fragment_main_list.xml
にListViewを追加- ListVIewのIDを設定(例では
listViewID
としています)
MainListFragment.kt
import android.os.Bundle import android.support.v4.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.ListView class MainListFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment val mainFrame = inflater!!.inflate(R.layout.fragment_main_list, container, false) val listView = mainFrame.findViewById(R.id.listViewID) as ListView val dataArray = arrayOf("kotlin", "Android", "Swift", "iOS") val adapter = ArrayAdapter<String>(this.context, android.R.layout.simple_list_item_1, dataArray) listView.adapter = adapter return mainFrame } }
ポイントはfindViewById
の前に変数mainFrame
にMainListActivityのFrameLayoutのインスタンスを挿入しています。
また、戻り値もそのmainFrame
を返却します。
MainListActivityからFragmentを呼び出す
MainListActivity.kt
import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.support.design.widget.TabLayout class MainListActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main_list) this.setActionBar() this.replaceFragment() } // MARK: - Privates private fun setActionBar() { supportActionBar?.title = "新潟永住計画" supportActionBar?.setIcon(R.mipmap.h_logo) // ActionBarの影をなくす supportActionBar?.elevation = 0F supportActionBar?.setDisplayShowHomeEnabled(true) } private fun replaceFragment() { val transaction = supportFragmentManager.beginTransaction() val mainFragment = MainListFragment() transaction.replace(R.id.frameID, mainFragment) transaction.commit() } }
supportFragmentManager
のbeginTransaction()
でtransactionを生成replace
のパラメータに表示領域のframeID
とMainListFragmentのインスタンスを渡して.commit()
※transaction.add()
でもいいのですが、.replace
はFragmentが存在しない場合はaddし、既に存在する場合はremoveしてaddするので基本replaceでいい。
Kotlinスタートブック -新しいAndroidプログラミング
- 作者: 長澤太郎
- 出版社/メーカー: リックテレコム
- 発売日: 2016/07/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Androidアプリ開発のためのKotlin実践プログラミング
- 作者: 船曳崇也
- 出版社/メーカー: 秀和システム
- 発売日: 2017/12/26
- メディア: 単行本
- この商品を含むブログ (1件) を見る
黒帯エンジニアが教えるプロの技術 Android開発の教科書(ヤフー黒帯シリーズ)
- 作者: 筒井俊祐,里山南人,松田承一,笹城戸裕記,毛受崇洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/06/18
- メディア: 単行本
- この商品を含むブログを見る