簡體   English   中英

如何將兩個不同的文本意圖從一個活動發送到另一個活動到同一個 textview?

[英]How can I send two different text intents to the same textview from one activity to another?

我已經閱讀了很多答案,但我找不到我的代碼哪里出錯了。 我想在我的第一個活動上有 2 個按鈕。 當我單擊 button1 或 button2 時,我希望該特定字符串資源中保存的文本出現在活動二的 textview 上。 我能夠填充其中一個字符串,但它不會根據我單擊的按鈕將它們分開。

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

我認為您必須制作兩個單獨的功能。 為什么您在一個 function 中添加 2 個意圖? 你只想做一個意圖並傳遞一個字符串。 此外,您可以將標簽添加到button 1 = But1button 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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM