【Android Studio】Javaで入手した値を共有する方法(MyGlobals)
Android StudioのJavaを使って入手した値を共有する方法を説明していきたいと思います。どのAPIレベルにまで対応しているかわかりませんがAPIレベル28では実行することができました。
最初に
今から説明するコードには過去に説明した画面移動する方法の技術を使っておりますので良ければ見てみてください。
AndroidManifestの設定
最初にAndroidManifestに入力するコードです。
「<application~</application>」内に入力してください。
android:name=".MyGlobals"
画面の追加
次に移動先になる画面を追加していきます。左側にある「1:プロジェクト」内にある「app」内にある上の「java」内にある一番上の「com.example.myapplication」を右クリックしてください。「新規」内の「アクティビティ」から「空白のアクティビティ」を選び、「アクティビティ名」を決め、「完了」を押してください。今回は「MainActivity2」と入力してください。すると新しくjavaとlayoutが追加されます。
MyGlobalsの追加
次に値を共有するために使うjavaクラスを追加します。左側にある「1:プロジェクト」内にある「app」内にある上の「java」内にある一番上の「com.example.myapplication」を右クリックしてください。「新規」内の一番上にある「javaクラス」を選び、名前を「MyGlobals」にして「Enter」を押してください。すると新しくjavaが追加されます。
layoutの設定
次にlayoutに入力するコードです。上から2行目にある「androidx.constraintlayout.widget.ConstraintLayout」だけ消去して代わりに「LinearLayout」を入力します。
「tools:context=".MainActivity"」と「>」の間で改行し、「android:orientation="vertical"」を入力してください。ここまでは追加したlayoutにも行ってください。
「MainActivity」のlayoutの「TextView~/>」は使わないので消去し、代わりにこちらを入力してください。
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="入力してください"
android:textSize="32sp" />
<Button
android:id="@+id/buttonSecond"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="MainActivity2へ"
android:textSize="32sp" />
「MainActivity2」のlayoutにはこちらを入力してください。
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="表示ボタンを押して下さい"
android:textSize="32sp" />
<Button
android:id="@+id/buttonShow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="表示"
android:textSize="32sp" />
<Button
android:id="@+id/buttonFinish"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="終了"
android:textSize="32sp" />
Javaの設定
最後にメインであるJavaに入力するコードです。「MyGlobals」のjavaクラスに入力してもらいたい箇所が3か所あります。
1か所目は「package com.example.myapplication;」の下に書いてください。
import android.app.Application;
2か所目は「public class MyGlobals」の後で、「extends Application」と入力してください。
3か所目は2か所目で入力した「public class MyGlobals extends Application {}」の{}内に書いてください。
String editText1Str;
「MainActivity」のjavaクラスに入力してもらいたい箇所が2か所あります。
1か所目は「public class MainActivity extends AppCompatActivity {」の下に書いてください。
MyGlobals myGlobals;
2か所目は「setContentView(R.layout.activity_main);」の下に書いてください。
myGlobals = (MyGlobals) this.getApplication();
findViewById(R.id.buttonSecond).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText et1=findViewById(R.id.editText1);
myGlobals.editText1Str=et1.getText().toString();
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
}
);
移動先のjavaクラスに入力してもらいたい箇所が2か所あります。
1か所目は「public class MainActivity2 extends AppCompatActivity {」の下に書いてください。
MyGlobals myGlobals;
2か所目は「setContentView(R.layout.activity_main);」の下に書いてください。
myGlobals = (MyGlobals) this.getApplication();
findViewById(R.id.buttonShow).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView tv2=findViewById(R.id.textView2);
tv2.setText(myGlobals.editText1Str);
}
}
);
findViewById(R.id.buttonFinish).setOnClickListener(
new View.OnClickListener(){
@Override
public void onClick(View view){
finish();
}
}
);
実行すると「入力してください。」と表示されている入力フォームとボタンが表示されます。そこに好きな文字を入力してボタンを押すと移動先の画面に移動します。表示ボタンを押すと先ほど入力した文字が表示されるようになります。
まとめ
今回は、入手した値を共有する方法を説明していきました。私も作り直しながら説明していったのでエラーや、入力ミスはないようにできていると思います。この方法で取得できなかった場合はコメントください。できる限り対処していきたいと思います。
アプリ開発は調べることがほとんどです。私はこのプログラムを作るまでにたくさんのサイトを見て回ることになってしまいました。皆さんには同じ思いをしてほしくないのでこのプログラムが役に立つことを祈っています。