如何更改其他活动的文字?

时间:2016-12-30 11:31:47

标签: java android html android-activity textview

我正在创建一个Android应用 - 使用Android Studio。

应用程序在MainActivity.java中启动,该程序提取activity_main.xml。在activity_main上,用户可以选择3个按钮中的一个。无论他们选择哪个按钮,它都会将它们带到SAME布局 - primary_layout.xml和与之关联的Java类是PrimaryClass.java。

我在primary_layout中有一个占位符。我希望这个占位符(id:占位符)根据之前选择的按钮进行更改。

例如。如果单击按钮1(id:button1),则占位符必须说“单击按钮1”。
或者说,单击按钮2(id:button2),然后占位符必须说“单击按钮2”。按钮3也是如此。 我已经创建了打开PrimaryClass的意图,但是我不太确定如何编写单击按钮时的意图。我根本不知道如何更改占位符的文本,具体取决于用户单击的按钮。我尝试过使用'if语句',但它似乎不起作用。 或者不是创建另一个活动,我应该创建一个片段,如果我应该,我将如何在这个特定的应用程序中编码片段?

我附上图片和代码以便更好地理解。

enter image description here

enter image description here

这是我的类和布局文件的代码:

MainActivity:

package com.msp.exampleapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
}

activity_main:



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.msp.exampleapplication.MainActivity">

    <Button
        android:text="Button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:id="@+id/button1"
        android:onClick="clickedButton1" />

    <Button
        android:text="Button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1"
        android:layout_alignParentStart="true"
        android:layout_marginTop="27dp"
        android:id="@+id/button2"
        android:onClick="clickedButton2" />

    <Button
        android:text="Button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button2"
        android:layout_alignParentStart="true"
        android:layout_marginTop="32dp"
        android:id="@+id/button3"
        android:onClick="clickedButton3" />

</RelativeLayout>
&#13;
&#13;
&#13;
PrimaryClass:

package com.msp.exampleapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class PrimaryClass extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.primary_layout);

    }
}

primary_layout:

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:text="{holder}"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="35sp"
        android:id="@+id/placeholder" />

</LinearLayout>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

您的第一个活动必须如下所示:

 package com.msp.exampleapplication;

 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;

 public class MainActivity extends AppCompatActivity {
 Button button1,button2,button3;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 button1=(Button)findViewById(R.id.button1);
 button2=(Button)findViewById(R.id.button2);
 button3=(Button)findViewById(R.id.button3);
 button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent=new Intent(MainActivity.this, PrimaryClass.class);
            intent.putExtra("message","Button 1 selected");
            startActivity(intent);
        }
    });
 button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent=new Intent(MainActivity.this, PrimaryClass.class);
            intent.putExtra("message","Button 2 selected");
            startActivity(intent);
        }
    });
 button3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent=new Intent(MainActivity.this, PrimaryClass.class);
            intent.putExtra("message","Button 3 selected");
            startActivity(intent);
        }
    });
 }

  }

将第二项活动编码如下:

package com.msp.exampleapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class PrimaryClass extends AppCompatActivity {
TextView placeholder;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.primary_layout);
    placeholder=(TextView) findViewById(R.id.placeholder);

    placeholder.setText(getIntent().getStringExtra("message"));

}
}

答案 1 :(得分:1)

这是您的问题的解决方案。您必须使用Intent在另一个活动中执行操作。

MainActivity代码,在每个按钮上创建一个意图点击如下

 button_1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this,PrimaryClass.class);
            intent.putExtra("button_text", "Button 1 Clicked");
          startActivity(intent);
        }
    });

按钮2和3

相同
button_2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this,PrimaryClass.class);
            intent.putExtra("button_text", "Button 2 Clicked");
          startActivity(intent);
        }
    });

button_3.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this,PrimaryClass.class);
            intent.putExtra("button_text", "Button 3 Clicked");
          startActivity(intent);
        }
    });

现在在PrimaryClass中使用onCreate方法

中的这段代码
  String btn_text;
  Bundle bundle = getIntent().getExtras();
   if (bundle != null) {
   btn_text = bundle.getString("button_text");
 }

现在在标签上设置文字

textView.setText(btn_text);

希望你理解这一点,如果不让我知道,我会帮助你。

相关问题