画面の遷移
このサンプルでは次の処理を実装する方法を紹介します。
メイン画面から次の画面を開く処理
開いた画面を閉じてメイン画面に戻す(再度表示させる)処理
ここで使用するのは次の内容となります。
項目 | 内容 | (1) | AndroidManifes.xml | (2) | MainActivity | (3) | SubActivity |
最初に作成されている画面を「MainActivity」とします。
java内に作られている、このサンプルであれば「com.example.test.test7」を右クリックします。
New→Java Classを選択します。
このサンプルでは「SubActivity」として「OK」を選択しています。
このようなエディタが表示されると思うので最低限、次の処理を追加してください。
extends AppCompatActivity
import android.content.Intent;
次に、「AndroidManifest.xml」を修正します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test.test7">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--
次の宣言をする必要があります。
import android.support.v7.app.AppCompatActivity;
次のように「AppCompatActivity」を継承させてください。
extends AppCompatActivity
-->
<activity android:name=".SubActivity">
<intent-filter>
<action android:name="android.intent.action.Sub" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
|
流れとしては次の通りです。
No | 内容 | 1 | このサンプルでは各画面にボタンを1個準備しています。 | 2 | メイン画面のボタンをタップするとサブ画面を開くようにします。 このとき、メイン画面は閉じていません。 | 3 | サブ画面が表示されるとボタンが表示されています。 | 4 | サブ画面のボタンをタップするとサブ画面を閉じます。 | 5 | サブ画面が閉じることでメイン画面が表示されます。 |
メイン画面
package com.example.test.test7;
//画面を遷移するために必要となります。
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
//Viewを使用するための宣言
import android.view.View;
//ボタンを使用するための宣言
import android.widget.Button;
//RelativeLayoutを使用するための宣言
import android.widget.RelativeLayout;
//メイン画面
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//配置を設定
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
x=50;
y=50;
width=200;
height=60;
RelativeLayout.LayoutParams obj1 = getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
Button btn = new Button(this);
btn.setText("次の画面へ");
//レイアウトに追加
layout.addView(btn, obj1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//インテントで画面を開くための準備をします。
Intent intent = new Intent(MainActivity.this, SubActivity.class);
//次の画面を開きます。
startActivity(intent);
}
});
}
//レイアウトを決定するオブジェクトを生成し渡します
public RelativeLayout.LayoutParams getLayoutObject(int width,int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
インテントを使用して現在の画面と開く画面を引数に設定し、インスタンス化します。
(例)
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivityを使って画面を開きます。
引数にはインテントのオブジェクトを設定します。
(例)
startActivity(intent);
サブ画面
package com.example.test.test7;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
//画面を遷移するために必要となります。
import android.content.Intent;
//Viewを使用するための宣言
import android.view.View;
//ボタンを使用するための宣言
import android.widget.Button;
//RelativeLayoutを使用するための宣言
import android.widget.RelativeLayout;
//サブ画面
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//配置を設定
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
x=50;
y=50;
width=200;
height=60;
RelativeLayout.LayoutParams obj1 = getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
Button btn = new Button(this);
btn.setText("閉じる");
//レイアウトに追加
layout.addView(btn, obj1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//画面を閉じます。
finish();
}
});
}
//レイアウトを決定するオブジェクトを生成し渡します
public RelativeLayout.LayoutParams getLayoutObject(int width, int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
ボタンをクリックすると「finish()」を実行させ、画面をとじます。
画面が閉じるとメイン画面が表示されます。
もしもメイン画面からサブ画面を開いたとき、メイン画面は閉じたい場合は
startActivityメソッドの後に「finish();」を実行してください。
(例)
メイン画面の「次の画面へ」ボタンをタップした場合
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//インテントで画面を開くための準備をします。
Intent intent = new Intent(MainActivity.this, SubActivity.class);
//次の画面を開きます。
startActivity(intent);
//画面を閉じます。
finish();
}
});
|
|
|