Как редактировать и получать обновления полей ввода editText из другого действия? - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь поиграть с двумя действиями. Редактировать и просматривать активность. Я хотел бы получить входные данные от действия редактирования и показать в действии представления. В операции редактирования у меня есть кнопка ok / submit, которая подтверждает изменения и возвращает их к операции просмотра, в этом случае поля ввода текста должны быть обновлены с введенными данными. Если кнопка отмены нажата, то, очевидно, никаких изменений не происходит, и пользователь возвращается к операции просмотра.

Большинство реализаций выполнено правильно, но я не могу получить введенные данныебыть показано на вид деятельности. Чего мне не хватает?

Это мои коды для редактирования и просмотра действий.

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="info@mail.com"
            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="info@mail.com"
            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>

1 Ответ

2 голосов
/ 26 октября 2019

Извините, этот пост будет длинным. Если вы хотите сделать что-то подобное, вы должны выполнить некоторые шаги и следовать им должным образом. а именно: -

  • Сначала , давая понять, что именно вы хотите сделать, что означает вашу цель .
  • Во-вторых , попытайтесь понять, что вы должны сделать, чтобы достичь этой цели, например, - что может понадобиться для этого, ресурсы, учебное пособие (для этого сценария) и т. Д.
  • Наконец давайте начнем поиск и узнаем, как это сделать.

Здесь, Я могу сказать вам, где проблема, вы начали учиться, но не завершили обучение. Я вижу, что вы только что скопировали и вставили в два разных действия без причины.

Хорошо, я делюсь тем, какие проблемы я обнаружил из приведенного выше кода: -

  1. Ваш ViewActivity.java должен состоять из некоторого TextView, где вы должны показать свои данные с вашего EditActivity.java, которого там нет.
  2. Вы отправляетеДанные с одним и тем же key каждый раз (еще одно доказательство вставки копии, не зная, что происходит), а это -

    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

  3. Когда выотправляя данные в вашу активность просмотра, вам нужно получить то, что вы отправляли, используя getIntent() что-то вроде: - String s = getIntent().getStringExtra("EXTRA_FNAME");, которое будет возвращать значение, назначенное этому key из вашей предыдущей активности при отправке в текущую деятельность.

  4. После получения нужного значения введите TextView в следующую строку следующим образом: - textView.setText(s); // fetched from getIntent() previously

Для получения дополнительной информации вы можете проверить этот урок , который показал, как пройти ипросматривать данные из одного мероприятия в другое. Надеюсь ты понимаешь. Счастливое кодирование

...