AndroidStudio 画面の追加と遷移(消去)

## 画面追加と遷移の処理
:::note info
## イメージ
![携帯.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/2bc1141b-f4cd-6bdb-c763-c9fe95113fc1.gif)
:::

## 画面を追加する
フォルダの java > com.～のとこで右クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/8bab0e1e-9ca4-190e-2ea0-b84353b9e47f.png)
<br>
新規 > Activity > EnptyViewsActivityをクリック

:::note warn
バージョンによって名前が違う場合があり
"EnptyViewsActivity"は
"EnptyActivity"だったりもする
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/34decd25-5d95-a0ed-9bf6-7f94b4d5f468.png)
<br>
新規作成の時と同じ画面がでるので設定して完了を押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/575c30ec-1485-c456-8a57-29563b2bafc0.png)
<br>
作成が正常にできてタブに追加された
※画像はMainActivity2で追加作成した状態
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/0ad74f6f-b6ee-46fd-f33a-a82726533ad3.png)

## 画面を遷移させる
**activity_main.xmlでレイアウト**
画面上にボタンをセットする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/e168efc2-c09d-1ac9-00d3-2951d011a937.png)

<br>

MainActivityへ追記する
~~~java:MainActivity
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        //ボタンを押した＋＋＋＋＋＋＋＋＋＋
        Button button = findViewById(R.id.btNext1);
        button.setOnClickListener(new ButtonClickListener());
        //＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
    }
    
    //処理＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
    private class ButtonClickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, MainActivity2.class);
            startActivity(intent);
        }
    }
    //＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋＋
}
~~~

:::note info
## 画面を遷移させる処理
~~~java
public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, MainActivity2.class);
    startActivity(intent);
}
~~~

**Intent intent = 
new Intent(MainActivity.this, MainActivity2.class);**
コンストラクタの引数
- 第１：packageContext
　現在のコンテキスト（アクティビティ）
　ここでは MainActivity.this を指定しています。
- 第２：cls
　遷移先のクラス(アクティビティクラスの名前.class)
　追加で作成したMainActivity2.classを指定します。

 <br>
 
 **startActivity(intent);**
 画面遷移を実行するためのコード
 引数のintentは上で設定したやつ
 
:::
これで次の画面への遷移処理ができた。

## 画面を戻す
**activity_main2.xmlでレイアウト**
遷移先の画面にボタンを配置
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/45847340-7b5e-4071-904e-6e57c8406f7a.png)
<br>

MainActivity2へ追記する
~~~java:MaineActivity2
public class MainActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main2);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }

    //ボタンを押した時の処理＋＋＋
    public void backBottomClick(View view) {
        finish();
    }
    //＋＋＋＋＋＋＋＋＋＋＋＋＋＋
}
~~~
:::note info
## ボタン用のメソッド
~~~java
public void backBottomClick(View view) {
    finish();
}
~~~
これを設定しておくとAttributeで設定できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/ddba8b42-ddd8-34cb-6852-db176b497252.png)

- **finish()**
現在のアクティビティを終了させる
これでボタンを押すとMaineActivity2が終了し、
２番目にスタックされているページ１が表示されることになる
:::

## 今回の処理の図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3953063/8542f633-7ade-5c5e-3fb4-68f2031af182.png)
画面はfinish()とかで消さない限り
残り続ける(スタックされる)ので考えて設定する