2019年5月19日日曜日

ユーザーからの文字列入力を受け取るダイアログ android開発

2019 May 19.

https://www.ipentec.com/document/android-custom-dialog-using-dialogfragment-return-value より

[activity_main.xml]

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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">

    <TextView
        android:id="@+id/textViewPhrase"
        android:layout_width="0dp"
        android:layout_height="66dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.118" />

</android.support.constraint.ConstraintLayout>



[input_text_dialog.xml]

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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">

    <TextView
        android:id="@+id/textViewPhraseLabel"
        android:layout_width="132dp"
        android:layout_height="27dp"
        android:text="Input text"
        app:layout_constraintBottom_toTopOf="@+id/editTextPhrase"
        tools:layout_editor_absoluteX="8dp" />

    <EditText
        android:id="@+id/editTextPhrase"
        android:layout_width="381dp"
        android:layout_height="52dp"
        android:layout_marginTop="268dp"
        android:ems="10"
        android:inputType="text"
        app:layout_constraintTop_toTopOf="parent"
        tools:layout_editor_absoluteX="8dp" />

    <Button
        android:id="@+id/buttonOK"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="52dp"
        android:layout_marginEnd="8dp"
        android:text="OK"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editTextPhrase" />
</android.support.constraint.ConstraintLayout>



MainActivity.java
  1. package YOUR.PACKAGE;
  2.  
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.widget.TextView;
  6.  
  7. public class MainActivity extends AppCompatActivity {
  8.  
  9. boolean is1stRun = true;
  10.  
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15.  
  16. if ( is1stRun ) {
  17. // get text by dialog
  18. InputTextDialogFragment cdf = new InputTextDialogFragment();
  19. cdf.show(getSupportFragmentManager(),"dialog");
  20. is1stRun = false;
  21. }
  22. }
  23.  
  24.  
  25. public void onReturnValue(String value) {
  26. TextView textViewPhrase = (TextView)findViewById(R.id.textViewPhrase);
  27. textViewPhrase.setText(value);
  28. }
  29.  
  30. }

InputTextDialogFragment.java
  1. package YOUR.PACKAGE;
  2.  
  3. import android.app.Dialog;
  4. import android.os.Bundle;
  5. import android.support.v4.app.DialogFragment;
  6. import android.view.View;
  7. import android.view.Window;
  8. import android.view.WindowManager;
  9. import android.widget.EditText;
  10.  
  11. public class InputTextDialogFragment extends DialogFragment {
  12. EditText editTextPhrase;
  13.  
  14. @Override
  15. public Dialog onCreateDialog(Bundle savedInstanceState) {
  16. Dialog dialog = new Dialog(getActivity());
  17. dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
  18. dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  19. WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
  20. dialog.setContentView(R.layout.input_text_dialog);
  21.  
  22. editTextPhrase = (dialog.findViewById(R.id.editTextPhrase));
  23.  
  24. dialog.findViewById(R.id.buttonOK).setOnClickListener(new View.OnClickListener() {
  25. @Override
  26. public void onClick(View v) {
  27.  
  28. String textPhrase = editTextPhrase.getText().toString();
  29. MainActivity callingActivity = (MainActivity) getActivity();
  30. callingActivity.onReturnValue(textPhrase);
  31.  
  32. dismiss();
  33. }
  34. });
  35.  
  36. return dialog;
  37. }
  38. }

0 件のコメント:

コメントを投稿