AS中級 値の受け渡し編①解説~Activityから別のActivityへ値を渡す~

Try1の解答例

MainActivity.java

package com.example.gettakea2a;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


EditText xEdit = findViewById(R.id.xEdit);
EditText yEdit = findViewById(R.id.yEdit);
TextView frontNumber = findViewById(R.id.frontNumber);
TextView backNumber = findViewById(R.id.backNumber);
Button inputNextBtn = findViewById(R.id.inputNextBtn);


inputNextBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int x = Integer.parseInt(xEdit.getText().toString());
int y = Integer.parseInt(yEdit.getText().toString());
int result = x + y;
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("result",result); ・・・・・・・・・①
startActivity(intent);
}
});
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:gravity="center_horizontal">


<TextView
android:id="@+id/frontNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="x"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"/>
<TextView
android:id="@+id/backNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="y"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="= ?"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="xに代入する値"
android:layout_margin="40sp"/>
<EditText
android:id="@+id/xEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="yに代入する値"
android:layout_margin="40sp"/>
<EditText
android:id="@+id/yEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
<Button
android:id="@+id/inputNextBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="結果は次ページ"/>

</LinearLayout>

SecondActivity.java

package com.example.gettakea2a;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);

TextView resultNumber = findViewById(R.id.resultNumber);

Intent intent = getIntent();
int resultNum = intent.getIntExtra("result",0);    ・・・・・・②
resultNumber.setText(String.valueOf(resultNum));
}
}

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SecondActivity"
android:gravity="center_horizontal"
android:orientation="vertical">

<TextView
android:id="@+id/resultNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="200sp"
android:textSize="30sp"/>

</LinearLayout>

 

Try2の解答例

MainActivity.java

package com.example.a2a;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

EditText frontEdit = findViewById(R.id.frontEdit);
EditText backEdit = findViewById(R.id.backEdit);
StringBuilder stringBuilder = new StringBuilder();

Button fusionNextBtn = findViewById(R.id.fusionNextBtn);
fusionNextBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

stringBuilder.append(frontEdit.getText().toString())
.append(backEdit.getText().toString());
String resultStr = stringBuilder.toString();
//Log.v("MY_LOG",resultStr);
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("resultStr",resultStr);
startActivity(intent);
}
});
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:gravity="center_horizontal"
android:orientation="vertical">

<EditText
android:id="@+id/frontEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:textSize="30sp"/>
<EditText
android:id="@+id/backEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/fusionNextBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="合体して次ページへ"/>


</LinearLayout>
 

SecondActivity.java

package com.example.a2a;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);

TextView resultView = findViewById(R.id.resultView);

Intent intent = getIntent();
String resultString = intent.getStringExtra("resultStr");
resultView.setText(resultString);
}
}

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SecondActivity"
android:gravity="center_horizontal"
android:orientation="vertical">

<TextView
android:id="@+id/resultView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40sp"
android:layout_marginTop="80sp"/>

</LinearLayout>