Androidアプリの画面遷移
リストをクリックして画面変えたら面白いなと思って作ってみた。
こんなアプリ
リスト項目クリック→いろんな色の画面が表示する
ソースコード
MainActivity.java
package net.frtts.listviewsample; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends Activity implements OnItemClickListener { ArrayAdapter<String> adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); // add some items adapter.add("red"); adapter.add("green"); adapter.add("blue"); adapter.add("gray"); adapter.add("hoge"); ListView listView = (ListView) findViewById(R.id.listView1); // ListView set ArrayAdapter listView.setAdapter(adapter); listView.setOnItemClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } // リスト項目をクリック(タッチ)した時に実行するメソッド public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { Intent intent = new Intent(this, BackColorActivity.class); if (intent != null) { intent.putExtra("color", adapter.getItem(pos)); startActivity(intent); // 画面遷移する } } }
BackColorActivity.java
package net.frtts.listviewsample; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.widget.RelativeLayout; public class BackColorActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_back_color); Bundle extras = getIntent().getExtras(); String colorString; if (extras != null) { colorString = extras.getString("color"); } else { colorString = "black"; } RelativeLayout rl = (RelativeLayout)findViewById(R.id.RelativeLayout0); try { rl.setBackgroundColor(Color.parseColor(colorString)); } catch (IllegalArgumentException e) { // 該当する色がない場合 Log.e("EXCEPTION", e.toString()); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate( R.menu.activity_back_color, menu); return true; } }
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" tools:listitem="@android:layout/simple_list_item_1" > </ListView> </LinearLayout>
activity_back_color.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/RelativeLayout0" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".BackColorActivity" > <TextView android:id="@+id/TextView0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:padding="@dimen/padding_medium" android:text="@string/hello_world" tools:context=".BackColorActivity" /> </RelativeLayout>
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.frtts.listviewsample" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".BackColorActivity" android:label="@string/title_activity_back_color" > </activity> </application> </manifest>
strings.xml
<resources> <string name="app_name">ListViewSample</string> <string name="hello_world">Hello world!</string> <string name="menu_settings">Settings</string> <string name="title_activity_main">ListView</string> <string name="title_activity_back_color">BackColorActivity</string> <string name="title_activity_edit_add">MainActivity</string> </resources>
簡単にポイント
Intentで画面を遷移する。
Bundleで遷移元のデータを取る。