Androidの画面遷移と、intent
Androidの画面遷移
今回は1枚目の画面のボタンをタップすると、画面が切り替わるという、2画面での遷移についてまとめていきます。
まずは、最初の画面を作る。
サンプルコード
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//画面部品ListViewを取得
val lvMenu = findViewById<ListView>(R.id.lvMenu)
//SimpleAdapterで使用するMutableListオブジェクトを用意
val menuList: MutableList<MutableMap<String, String>> = mutableListOf()
//「唐揚げ定食」のデータを格納するMapオブジェクトの用意とmenuListへのデータ登録
var menu = mutableMapOf("name" to "唐揚げ定食", "price" to "800円")
menuList.add(menu)
//「~定食」のデータを格納するMapオブジェクトの用意とmenuListへのデータ登録
menu = mutableMapOf("name" to "ハンバーグ定食", "price" to "850円")
menuList.add(menu)
menu = mutableMapOf("name" to "生姜焼き定食", "price" to "850円")
menuList.add(menu)
menu = mutableMapOf("name" to "ステーキ定食", "price" to "1000円")
menuList.add(menu)
menu = mutableMapOf("name" to "野菜炒め定食", "price" to "750円")
menuList.add(menu)
menu = mutableMapOf("name" to "とんかつ定食", "price" to "900円")
menuList.add(menu)
menu = mutableMapOf("name" to "ミンチかつ定食", "price" to "850円")
menuList.add(menu)
menu = mutableMapOf("name" to "チキンかつ定食", "price" to "900円")
menuList.add(menu)
menu = mutableMapOf("name" to "コロッケ定食", "price" to "850円")
menuList.add(menu)
menu = mutableMapOf("name" to "回鍋肉定食", "price" to "750円")
menuList.add(menu)
menu = mutableMapOf("name" to "麻婆豆腐定食", "price" to "800円")
menuList.add(menu)
menu = mutableMapOf("name" to "青椒肉絲定食", "price" to "800円")
menuList.add(menu)
//SimpleAdapter第4引数from用のデータの用意
val from = arrayOf("name", "price")
//SimpleAdapter第5引数to用のデータの用意
val to = intArrayOf(android.R.id.text1, android.R.id.text2)
//SimpleAdapterを生成
val adapter = SimpleAdapter(
this@MainActivity, menuList,
android.R.layout.simple_list_item_2, from, to
)
//アダプタの登録
lvMenu.adapter = adapter
}
}
アダプタクラスSimpleAdapter
データ構造として、
MutableList<MutableMap<String,*>>
を使用する。
アダプタオブジェクトの詳しい説明は、こちら
SimpleAdapterはインスタンスを生成する際、引数が5個必要
引数 | 引数名 | 内容 |
---|---|---|
第1引数 | context:Context | 「this@アクティビティクラス名」を記述する |
第2引数 | data:MutableList<MutableMap<String,*>> | リストデータそのもの |
第3引数 | resource:Int | リストビューの各行のレイアウトを表すR値 |
第4引数 | from:Array<string> | 各画面部品に割り当てるデータを表すMutableMapのキー名配列です。 |
第5引数 | to:IntArray | from記載のMutableMapのキー名に対応してデータを割り当てられる画面部品のR値配列です。 |
画面を追加する
1つ目の画面ができたら、2つ目の画面を作ります。
[File]メニュー >[New]>[Activity]>[Empty Activity]
でウィザード画面を開き、各種設定すると、
・アクティビティクラスの追加
・レイアウトXMLファイルの追加
・AndroidManifest.xmlへの追記
という、3つの作業を行ってくれる。
Android画面遷移の特徴
Androidの画面遷移は、元の画面の上に画面が載る形で表示されます。
画面をタップし、次の画面に「遷移」するのではなく、次の画面が新たに起動し、前の画面の上に表示されます。
戻るボタンをタップすると、起動している画面を終了させることで、前の画面が出てくる。
という仕組みになっています。
intentクラス
画面遷移の中心となるクラスが「intentクラス」で、このクラスが画面、すなわちアクティビティの起動の役割を担います。
具体的には、以下の手順
1,Intentクラスのインスタンスを生成する
2,起動先アクティビティに渡すデータを格納する
3,アクティビティを起動する
2,3ともに、Intentオブジェクトのメソッドを利用します。
2だったら、putExtra()メソッドで、3は、getデータ型Extra()メソッドです。
onClick属性
また、リストビューのタップを検知するリスナの登録は、リスナインターフェイス
を実装するこどで行いましたが、
ボタンなどのタップの処理、つまり、onClick
処理は、他のものを代用する。
→それが、Androidで用意されていて、android:onClick
属性です。
これを画面構成のxmlファイル内のボタンタグ内に記述します。
そして、Kotlinファイルで、メソッドを定義すると、リスナ登録を自動で行ってくれます。
▶︎しかし。定義する上での3つのルールがあります。
・publicなメソッドであること
・戻り値はないこと
・引数はView型1であること
Author And Source
この問題について(Androidの画面遷移と、intent), 我々は、より多くの情報をここで見つけました https://qiita.com/nipp/items/9f81154f2524fd614ce3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .