Android:如何从另一个活动中编辑和获取editText输入字段的更新?

问题描述 投票:0回答:1

我正在尝试两个活动。编辑和查看活动。我想从edit活动中获取输入,并在view活动中显示。在编辑活动中,我具有“确定/提交”按钮,该按钮批准更改并返回到查看活动,在这种情况下,应使用输入的数据更新输入文本字段。如果按下了“取消”按钮,则显然不会进行任何更改,并且用户将被带回到视图活动。

我已经正确完成了大多数实现,但是无法将输入的数据显示在视图活动中。我想念什么?

这是我用于编辑和查看活动的代码。

ViewActivity.java

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class ViewActivity extends AppCompatActivity {
    public static final String EXTRA_FNAME = "EXTRA_TEXT";
    public static final String EXTRA_LNAME = "EXTRA_TEXT";
    public static final String EXTRA_EMAIL = "EXTRA_TEXT";

    String Fname, Lname, email;
    EditText FNInput, LNInput, emailInput;
    Button editButton;

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

        FNInput = (EditText) findViewById(R.id.FNInput);
        LNInput = (EditText) findViewById(R.id.LNInput);
        emailInput = (EditText) findViewById(R.id.emailInput);

        editButton = (Button) findViewById(R.id.okButton);
        editButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openEditActivity();
            }
        });

        Fname = FNInput.getText().toString();
        Lname = LNInput.getText().toString();
        email = emailInput.getText().toString();
    }
    public void openEditActivity(){

        Intent intent = new Intent(this, EditActivity.class);
        intent.putExtra(EXTRA_FNAME, Fname);
        intent.putExtra(EXTRA_LNAME, Lname);
        intent.putExtra(EXTRA_EMAIL, email);
        startActivity(intent);
    }
}

EditActivity.java

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class EditActivity extends AppCompatActivity {
    public static final String EXTRA_FNAME = "EXTRA_TEXT";
    public static final String EXTRA_LNAME = "EXTRA_TEXT";
    public static final String EXTRA_EMAIL = "EXTRA_TEXT";

    String Fname, Lname, email;
    EditText FNInput, LNInput, emailInput;
    Button okButton, cancelButton;

    private static final String TAG = "EditActivity";


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

        FNInput = (EditText) findViewById(R.id.FNInput);
        LNInput = (EditText) findViewById(R.id.LNInput);
        emailInput = (EditText) findViewById(R.id.emailInput);
        okButton = (Button) findViewById(R.id.okButton);
        cancelButton = (Button) findViewById(R.id.cancelButton);

        okButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                updateViewActivity();
            }
        });

        cancelButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                FNInput.setText("");
                LNInput.setText("");
                emailInput.setText("");
                finish();
            }
        });
    }

    public void updateViewActivity(){
        Fname = FNInput.getText().toString();
        Lname = LNInput.getText().toString();
        email = emailInput.getText().toString();

        FNInput.setText(Fname);
        LNInput.setText(Lname);
        emailInput.setText(email);

        Intent intent = new Intent(this, ViewActivity.class);
        intent.putExtra(EXTRA_FNAME, Fname);
        intent.putExtra(EXTRA_LNAME, Lname);
        intent.putExtra(EXTRA_EMAIL, email);
        startActivity(intent);
    }
}

activity_view.xml

<RelativeLayout 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=".ViewActivity">

    <LinearLayout
        android:layout_width="270dp"
        android:layout_height="374dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="57dp"
        android:layout_marginTop="75dp"
        android:orientation="vertical">

        <EditText
            android:id="@+id/FNInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="First Name"
            android:inputType="textPersonName" />

        <EditText
            android:id="@+id/LNInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Last Name"
            android:inputType="textPersonName" />

        <EditText
            android:id="@+id/emailInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="[email protected]"
            android:inputType="textEmailAddress" />

        <Button
            android:id="@+id/okButton"
            android:layout_width="153dp"
            android:layout_height="wrap_content"
            android:text="Edit" />
    </LinearLayout>

    <TextView
        android:id="@+id/viewTV"
        android:layout_width="134dp"
        android:layout_height="33dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginEnd="135dp"
        android:layout_marginBottom="18dp"
        android:text="View Activity"
        tools:layout_editor_absoluteX="15dp"
        tools:layout_editor_absoluteY="687dp" />

</RelativeLayout>

activity_edit.xml

<RelativeLayout 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=".EditActivity">


    <LinearLayout
        android:layout_width="270dp"
        android:layout_height="374dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="57dp"
        android:layout_marginTop="75dp"
        android:orientation="vertical">

        <EditText
            android:id="@+id/FNInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="First Name"
            android:inputType="textPersonName" />

        <EditText
            android:id="@+id/LNInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Last Name"
            android:inputType="textPersonName" />

        <EditText
            android:id="@+id/emailInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="[email protected]"
            android:inputType="textEmailAddress" />

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

            <Button
                android:id="@+id/okButton"
                style="@style/Widget.AppCompat.Button.Borderless.Colored"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="OK"
                android:textColor="#03A9F4" />

            <Button
                android:id="@+id/cancelButton"
                style="@style/Widget.AppCompat.Button.ButtonBar.AlertDialog"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Cancel"
                android:textAlignment="center" />
        </TableRow>

    </LinearLayout>

    <TextView
        android:id="@+id/viewTV"
        android:layout_width="108dp"
        android:layout_height="38dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="169dp"
        android:layout_marginBottom="18dp"
        android:text="Edit Activity" />


</RelativeLayout>
android android-layout android-intent
1个回答
1
投票

    First,让自己清楚自己想做什么,这意味着你的[[goal。
  • 第二,尝试了解实现该目标应采取的措施,例如-可能需要采取哪些措施,资源,教程(针对此情况)等。
  • 最后
  • 让我们开始搜索并学习如何做。
  • 这里,
  • 我可以告诉您问题出在哪里,您开始学习但没有完成学习。我可以看到您只是无故复制并粘贴到两个不同的活动中。

    嗯,我分享从上面的代码中发现的问题:-

    您的ViewActivity.java应该由一些TextView组成,您打算在其中显示EditActivity.java中的数据,但该数据不存在。

      您每次都以相同的key发送数据(另一种复制粘贴证明,不知道发生了什么),即-
    1. public static final String EXTRA_FNAME = "EXTRA_TEXT"; // use it as EXTRA_FNAME public static final String EXTRA_LNAME = "EXTRA_TEXT"; // use it as EXTRA_LNAME public static final String EXTRA_EMAIL = "EXTRA_TEXT"; // use it as EXTRA_EMAIL
    2. 当您向视图活动发送数据时,您需要使用getIntent()来接收所发送的内容,例如:-String s = getIntent().getString("EXTRA_FNAME");,它将返回先前活动中分配给此key的值,同时发送到当前活动。

    3. 收到期望值后,在下一行中以如下方式填充TextView:-textView.setText(s); // fetched from getIntent() previously

  • 有关更多信息,您可以检查this tutorial,它显示了如何将数据从一个活动传递和查看到另一个活动。希望你能理解。快乐编码
  • © www.soinside.com 2019 - 2024. All rights reserved.