[Android Studio] Fragment内でEditTextとSeekBar

実行環境: Android Studio 3.6 / JAVA

前回作成したFragment内でEditTextとSeekbarを使用して値を作成します。

下の動画のような動作になります。

https://lifeprosper.link/biz/wp-content/uploads/2020/02/tem.webm
  • KokyuFragment内ではEditTextに入力された数値を取得します。
  • CosmoFragment内ではSeekBarでスライドされた数値を取得します。
  • 上述の処理はFragmentのライフサイクルのOnStart()内で実施しています。

EditTextに関しては詳しいサイトが山ほどあるので割愛、SeekBarもしかりですが、ここではSeekBarを動かしている途中の「onProgressChanged」と、手を放した後の「onStopTrackingTouch」に処理を記載しています。

Fragment内で処理を進めるためのライフサイクルにはいくつかあるのですが、今回はOnCreateの後のOnStart内に処理を記載してみました。Viewの取り方が不明だったのですが、ここではfindViews()にgetActivity()を記載することで動くようになりました。

コードは各Fragmentを以下に記載いたします。

KokyuFragment.java

package com.example.sampleattack;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.fragment.app.Fragment;

public class KokyuFragment extends Fragment{
    EditText editText5;
    TextView textView;
    Button button5;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.kokyu_fragment, container, false);
    }
    @Override
    public void onStart(){
        super.onStart();
        findViews();

        button5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = editText5.getText().toString();
                String powerKokyu = "Kokyuパワー:"+text;
                textView.setText(powerKokyu);
            }
        });
    }
    protected void findViews() {
        editText5 = (EditText) getActivity().findViewById(R.id.editText);
        textView = (TextView) getActivity().findViewById(R.id.textView5);
        button5 = (Button) getActivity().findViewById(R.id.button5);
    }
}

CosmoFragment.java

package com.example.sampleattack;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SeekBar;
import android.widget.TextView;

import androidx.fragment.app.Fragment;

public class CosmoFragment extends Fragment {
    SeekBar seekbar;
    TextView textView;
    private static int power;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.cosmo_fragment, container, false);
    }
    @Override
    public void onStart(){
        super.onStart();
        findViews();
        seekbar.setOnSeekBarChangeListener(
                new SeekBar.OnSeekBarChangeListener() {
                  public void onProgressChanged(SeekBar seekBar,int progress, boolean fromUser) {
                        textView.setText("Cosmoパワー:"+seekBar.getProgress());
                    }
                    public void onStartTrackingTouch(SeekBar seekBar) {}

                    public void onStopTrackingTouch(SeekBar seekBar) {
                        power = seekBar.getProgress();
                        String powerNumb = "Cosmoパワー:"+power;
                        textView.setText(powerNumb);
                        SubActivity.setNumbers(powerNumb);
                    }
                }
        );
    }
    protected void findViews() {
        seekbar = (SeekBar) getActivity().findViewById(R.id.seekBar);
        textView = (TextView) getActivity().findViewById(R.id.textView2);
    }
}

関連記事: