Как я могу получить EditTexts и Spinners одним нажатием кнопки во фрагменте? - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь получить строки из EditTexts и Spinner по нажатию кнопки во фрагменте.

Я написал некоторый код в упражнении, и это работает, но я не могу понять, какизмените его так, чтобы он работал во фрагменте.

public void buttonClick (View view) {

    Spinner stars = findViewById(R.id.starsSpinner);
    String starsText = stars.getSelectedItem().toString();

    EditText time = findViewById(R.id.editTime);
    String timeText = time.getText().toString();

    EditText location = findViewById(R.id.editLocation);
    String locationText = location.getText().toString();

    String space = " ";

    String shareBody ="!r " + starsText + space + locationText + space + timeText;

    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
    sharingIntent.setClassName("com.discord", "com.discord.app.AppActivity$AppAction");
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);

    startActivity(Intent.createChooser(sharingIntent, shareBody));

}

Код в упражнении разделяет строку с приложением Discord. Каждая модификация фрагмента, которую я пробовал, просто вылетает из приложения.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 07 октября 2019

Прежде всего, вы не можете обрабатывать нажатие на фрагменте, как действие. Поэтому вы должны удалить эту строку из вашего xml:

        android:onClick="someMethod"

После этого во фрагменте инициализируйте объект кнопки и вызовите его setOnClickListenerМетод.

Посмотрите на это:

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    final View rootView=inflater.inflate(R.layout.fragment_blank, container, false);

    //using findViewById() in a Fragment
    Button button=rootView.findViewById(R.id.button_id);

    //handle onclick events for the button
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            EditText time = rootView.findViewById(R.id.editTime);

        }
    });

    return rootView;
}

Я надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...