実行環境: Android Studio 3.6 / JAVA
前回作成したFragment内でEditTextとSeekbarを使用して値を作成します。
下の動画のような動作になります。
- 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); } }
関連記事: