Intentでデータを受け取る
機能:
・「ADD」ボタンで画面1→画面2(入力画面)に遷移
・画面2(入力画面)でデータを入力する
・画面1で入力されたデータを表示する
必要なファイル:
activity_main.xml
MainActivity.java
package com.example.orisa.myintent4; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { //部品の変数 Button addBtn; TextView showTask; //定数 private final static int REQUEST_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //部品の取得 addBtn = (Button)findViewById(R.id.addBtn); showTask = (TextView)findViewById(R.id.showTask); //リスナーをつける addBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplication(), SubActivity.class); startActivityForResult(intent, REQUEST_CODE); } }); } //値を受け取る @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ case REQUEST_CODE: if(resultCode == RESULT_OK){ String task = data.getStringExtra("TASK_STRING"); String time = data.getStringExtra("TIME_STRING"); String date = data.getStringExtra("DATE_STRING"); //テキストビューに表示 String str = "TASK:\n"+task+"\n\nTIME:\n"+time+"\n\nDATE:\n"+date; showTask.setText(str); }else if (resultCode == RESULT_CANCELED){ Toast.makeText(MainActivity.this, "task creation cancelled", Toast.LENGTH_SHORT); } break; default: break; } } }
activity_sub.xml
SubActivity.java
package com.example.orisa.myintent4; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; public class SubActivity extends AppCompatActivity { //部品の変数 EditText addTask, addTime, addDate; Button okBtn, cancelBtn; //Intent変数 Intent intent = new Intent(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); //部品の取得 addTask = (EditText)findViewById(R.id.addTask); addTime = (EditText)findViewById(R.id.addTime); addDate = (EditText)findViewById(R.id.addDate); okBtn = (Button)findViewById(R.id.okBtn); cancelBtn = (Button)findViewById(R.id.cancelBtn); //okBtnクリック時の処理 okBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //値を格納 intent.putExtra("TASK_STRING", addTask.getText().toString()); intent.putExtra("TIME_STRING", addTime.getText().toString()); intent.putExtra("DATE_STRING", addDate.getText().toString()); //Resultを設定 setResult(RESULT_OK, intent); //Intentの終了 finish(); } }); //cancelBtnクリック時の処理 cancelBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Resultを設定 setResult(RESULT_CANCELED, intent); //Intentの終了 finish(); } }); } }
AndroidManifest.xml
SubActivityの部分だけ追記
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.orisa.myintent4"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" 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> <activity android:name=".SubActivity" android:label="@string/app_name" /> </application> </manifest>