Передайте текстовое значение другому тексту

#java #android

Вопрос:

Я хочу создать представление прокрутки списка категорий в Android studio с использованием java. У меня есть truble, чтобы понять, как передать значение из TextView в anthor TextView с тем же значением в другой деятельности.

activity_first.xml

 <TextView
            android:id="@ id/PersonName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:textColorHint="@color/black"
            android:background="@android:color/transparent"
            android:text="Name" />
 

FirstActivity.java

 public class FirstActivity extends AppCompatActivity {
    TextView PersonName;

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

        PersonName = (TextView)findViewById(R.id.PersonName);

        PersonName.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent p = new Intent(FirstActivity.this, SecondActivity.class);
                startActivity(p);
            }
        });
    }
}
 

Во втором упражнении у меня есть вид прокрутки.

activity_second.xml

 <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <TextView
                    android:id="@ id/textView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Father" />

                <TextView
                    android:id="@ id/textView2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Mother" />
            </LinearLayout>
        </ScrollView>
 

в activity_second.xml когда я нажму на TextView, он вернет меня со значением Father (id:TextView) в FirstActivity и изменит TextView (id:имя пользователя) на father, и если я сделаю это со значением mother (id:textView2), он выполнит то же действие и вернет меня в FirstActivity.

Ответ №1:

Вы можете сделать это с помощью метода getExtra

Google Android getExtra

SecondActivity.java

     public class SecondActivity extends AppCompatActivity {

    TextView mother,father;

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

        mother = (TextView)findViewById(R.id.textView);
        father = (TextView)findViewById(R.id.textView2);


        mother.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Bundle bundle = new Bundle();
                bundle.putString("id", seciliodaid);
                bundle.putInt("type", 0);
                Intent newIntent;
                newIntent = new Intent(SecondActivity.this, FirstActivity.class);
                newIntent.putExtras(bundle);
                startActivityForResult(newIntent, 0);
            }
        });

 father.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Bundle bundle = new Bundle();
                bundle.putString("id", seciliodaid);
                bundle.putInt("type", 1);
                Intent newIntent;
                newIntent = new Intent(SecondActivity.this, FirstActivity.class);
                newIntent.putExtras(bundle);
                startActivityForResult(newIntent, 0);
            }
        });
    }
}
 

FirstActivity.java

 public class FirstActivity extends AppCompatActivity {
    TextView PersonName;
    Bundle data;
    int type=0;

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

        PersonName = (TextView)findViewById(R.id.PersonName);

        try {
                data = getIntent().getExtras();
                type = data.getInt("type");
                if(type==0){
                  PersonName.setText("Mother");
                }else if(type==1){
                  PersonName.setText("Father");
                }
         }catch (Exception e){
         }

        PersonName.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent p = new Intent(FirstActivity.this, SecondActivity.class);
                startActivity(p);
            }
        });
    }
}
 

Ответ №2:

Хотя вы можете использовать Bundle для этого (как следует из другого ответа), если вам просто нужны строки, вы можете сделать следующее (я считаю, что это проще, но это будет зависеть от вашей реализации):

В кнопке onClickListener FirstActivity.java:

 Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("Mother", mother.getText().toString());
intent.putExtra("Father", father.getText().toString());
 

В текстовом представлении onClickListener SecondActivity.java:

 String mother = getIntent().getStringExtra("Mother");
String father = getIntent().getStringExtra("Father");