如何将两个不同的文本意图从一个活动发送到另一个活动的同一文本视图



我读了很多答案,但我找不到我的代码哪里出了问题。我想在我的第一个活动上有两个按钮。当我单击按钮1或按钮2时,我希望保存在特定字符串资源中的文本显示在活动二的文本视图中。我可以填充其中一个字符串,但它不会根据我单击的按钮将它们分开。

Activity_min.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>

主要活动.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);
}
}

我认为您必须创建两个独立的函数。为什么在一个函数中添加两个意图?您只想做出一个意图并传递一个字符串。此外,您还可以向button 1 = But1button 2 = But2添加标记。只需将android:tag="But1"添加到两个按钮的XML布局中即可。'

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);
}

最新更新