Как я могу отправить два разных текстовых намерения в одно и то же текстовое представление из одного действия в другое? - PullRequest
1 голос
/ 10 июля 2020

Я прочитал много ответов и не могу найти, где я ошибаюсь в своем коде. Я хочу, чтобы на моем первом занятии было 2 кнопки. Когда я нажимаю кнопку button1 или button2, я хочу, чтобы текст, содержащийся в указанном строковом ресурсе c, отображался в текстовом представлении действия два. Я могу заполнить одну из строк, но она не будет разделять их в зависимости от того, какую кнопку я нажимаю.

Activity_main. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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">


<Button
    android:id="@+id/button_main"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="162dp"
    android:layout_marginTop="150dp"
    android:layout_marginEnd="161dp"
    android:onClick="launchSecondActivity"
    android:text="Passage 1"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/button_two"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="162dp"
    android:layout_marginTop="244dp"
    android:layout_marginEnd="161dp"
    android:onClick="launchSecondActivity"
    android:text="Passage 2"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/button_three"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="162dp"
    android:layout_marginTop="368dp"
    android:layout_marginEnd="161dp"
    android:onClick="launchSecondActivity"
    android:text="Passage 3"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/button_main_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="180dp"
    android:layout_marginTop="114dp"
    android:layout_marginEnd="172dp"
    android:layout_marginBottom="400dp"
    android:text="@string/button_main_passage"
    android:visibility="invisible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/button_main" />

<TextView
    android:id="@+id/button_second_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="180dp"
    android:layout_marginTop="114dp"
    android:layout_marginEnd="172dp"
    android:layout_marginBottom="400dp"
    android:text="@string/button_second_passage"
    android:visibility="invisible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/button_main" />

<TextView
    android:id="@+id/button_third_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="180dp"
    android:layout_marginTop="114dp"
    android:layout_marginEnd="172dp"
    android:layout_marginBottom="400dp"
    android:text="@string/button_third_passage"
    android:visibility="invisible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/button_main" />


</androidx.constraintlayout.widget.ConstraintLayout>

Activity_passage. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".PassageActivity">

<ScrollView
    android:id="@+id/scroll_passage"
    android:layout_width="409dp"
    android:layout_height="729dp"
    android:layout_marginTop="1dp"
    android:layout_marginBottom="1dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <TextView
        android:id="@+id/text_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </TextView>

    <TextView
        android:id="@+id/text_message_two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </TextView>

</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

строк. xml

<resources>
<string name="app_name">ThreeButtons</string>
<string name="activity2_name">Passage</string>
<string name="button_main_passage">First Passage First Passage First Passage First 
Passage</string>
<string name="button_second_passage">Second Passage Second Passage Second Passage Second 
Passage</string>
</resources>

MainActivity. java

package com.dev20.threebuttons;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {
private TextView mButtonMainText;
private TextView mButtonSecondText;

private static final String LOG_TAG = MainActivity.class.getSimpleName();
public static final String EXTRA_MESSAGE = "com.example.android.threebuttons.extra.MESSAGE";
public static final String EXTRA_MESSAGE2 = "com.example.android.threebuttons.extra.MESSAGE";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mButtonMainText = findViewById(R.id.button_main_text);
    mButtonSecondText = findViewById(R.id.button_second_text);
}

public void launchSecondActivity(View view) {
    Log.d(LOG_TAG, "Button Clicked");
    Intent intent = new Intent(this, PassageActivity.class);
    String message = mButtonMainText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);

    Intent intent2 = new Intent(this, PassageActivity.class);
    String message2 = mButtonSecondText.getText().toString();
    intent2.putExtra(EXTRA_MESSAGE2, message2);
    startActivity(intent);
}
}

PassageActivity. java

package com.dev20.threebuttons;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;


public class PassageActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_passage);
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    TextView textView = findViewById(R.id.text_message);
    textView.setText(message);
    Intent intent2  = getIntent();
    String message2 = intent2.getStringExtra(MainActivity.EXTRA_MESSAGE2);
    TextView textView2 = findViewById(R.id.text_message);
    textView2.setText(message2);
}
}

1 Ответ

2 голосов
/ 10 июля 2020

Я думаю, вам нужно сделать две отдельные функции. Почему вы добавляете 2 намерения в одну функцию? Вам нужно только одно намерение и передать одну строку. Также вы можете добавить тег к button 1 = But1 и button 2 = But2. Просто добавьте в XML макет android:tag="But1" на обе кнопки. '

public void launchSecondActivity(View view) {
    String arg = null;
    if (view.getTag().equals("But1"))
    {
        arg = mButtonMainText.getText().toString();
    }
    else if (view.getTag().equals("But2"))
    {
        arg = mButtonSecondText.getText().toString();
    }
    Intent intent = new Intent(this, PassageActivity.class);
    intent.putExtra(EXTRA_MESSAGE, arg);
    startActivity(intent);
}
...