85
89

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Androidでよく書く基本的な記述集(その1)

Last updated at Posted at 2014-09-24

今回はActivity間で必要となってくる基本的な記述について集めました。

#Activityを起動したい

MainActivity
Intent intent = new Intent(this, NextActivity.class);//第2引数に移動したいActivity
startActivity(intent);

startActivity()メソッドにintentを渡してIntentのコンストラクタに渡したActivityを起動する。

MainActivity
Intent intent = new Intent(this, NextActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);引数に起動方法を指定
startActivity(intent);

setFlags()メソッドを使えば起動時にどのような振る舞いを行うか指定できます。
Intent.FLAG_ACTIVITY_NO_HISTORYの場合、履歴にスタックせずに次のアクティビティを起動できる。

#他のActivityを起動するときに値を渡したい
現在のActivity

MainActivity
String value = "value";
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("KEY", value);//第一引数key、第二引数渡したい値
startActivity(intent);

受け取り側のActivity

NextActivity
Intent intent = getIntent();
String value = intent.getStringExtra("KEY");//設定したkeyで取り出す

putExtraメソッドはプリミティブ型およびString型なら渡すことが可能。
また、SerializeしたクラスおよびParcerableしたクラスも可能。

渡すときはputExtra()のメソッドのみだが取り出す際は
int型ならgetIntExtra("");
String型ならgetStringExtra("");
のように型に対応したメソッドを呼び出す。

#どのActivityからも自由に値を参照したい
Applicationクラスを使います。
Applicationクラスを使うとアプリケーション内でデータの共有が可能。
このクラスはアプリ起動と同時に作成され動作する。
イメージとしてはどこからでも参照できる最上位のメモリ領域を確保している感じ。

Applicationを継承したクラスを作成する。

MyApplication
public class MyApplication extends Application{
    private String value = "";
    @Override
    public void onCreate() {
        //アプリケーションクラス作成時
    }
    public String getValue(){
        return this.value;
    }
    public void setValue(String value){
        this.value = value
    }
}

applicationの属性に作成したクラス名を記述。

AndroidManifest.xml
//applicationの属性にandroid:name="アプリケーションのクラス名"を記述
<application android:name="com.example.MyApplication"
    android:icon="@drawable/icon" android:label="@string/app_name">

使うときは

MainActivity
MyApplication mApp = (MyApplication) this.getApplication();
mApp.setValue("value");//valueをセット
NextActivity
MyApplication mApp = (MyApplication) this.getApplication();
mApp.getValue();//valueを取得

次回も基本的な記述について集めたいと思います。

85
89
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
85
89

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?