简体   繁体   中英

How to pass users EditText input in a Textview in another activity

I have 2 textboxes with a users name and Id number in my main activity. When clicking the edit button the user is sent to second activity where they can edit their name and Id number. Then when they click Save, the edited input should override the written text in the two existing textviews in the first activity. But when I click the Save button, my app crashes...

Furthermore, main activity has also a capture profile pic. feauture, but when in landscape mode, my captured image. disappear.

I'm totally new to Android and this is a school assignment with due on Sunday... Can someone please help me!!

This is my first activity's xml:

<?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: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.example.solveigdoan.cameraactivity.SecondActivity2"
android:background="#F0FFFF">


<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="8"
android:id="@+id/EditName"
android:layout_marginTop="42dp"
android:hint="Solveig Mortensen"
android:layout_marginLeft="160dp"
android:background="#87CEEB"
android:textSize="20dp"
android:textColor="#000000" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/EditName"
android:text="@string/edit_name"
android:textSize="20dp"
android:textColor="#000000"
android:id="@+id/NameLabel" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="8"
android:id="@+id/EditID"
android:hint="123456"
android:layout_below="@+id/EditName"
    android:layout_alignLeft="@+id/EditName"
    android:layout_alignStart="@+id/EditName"
    android:layout_marginTop="40dp"
    android:background="#87CEEB"
    android:textSize="20dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@id/EditID"
    android:text="@string/edit_id"
    android:textSize="20dp"
    android:textColor="#000000"
    android:id="@+id/IdLabel" />

<CheckBox
    android:id="@+id/Yes"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Y"
    android:onClick="onCheckboxClicked"
    android:layout_marginTop="27dp"
    android:layout_below="@+id/AndrStatus"
    />


<CheckBox android:id="@+id/NO"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/N"
    android:onClick="onCheckboxClicked"
    android:layout_marginTop="30dp"
    android:layout_below="@+id/Yes"
    />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/cancel"
    android:id="@+id/buttonCancel"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:textColor="#000000"
    android:background="#87CEEB" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/save_btn"
    android:id="@+id/buttonSave"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:textColor="#000000"
    android:background="#87CEEB" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/android_developer"
    android:id="@+id/AndrStatus"
    android:layout_centerVertical="true"
    android:layout_alignLeft="@+id/ID"
    android:layout_alignStart="@+id/ID"
    android:textSize="20dp"
    android:textColor="#000000" />

</RelativeLayout>

AND second activity's xml:

    <?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: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.example.solveigdoan.cameraactivity.CameraActivity">


<FrameLayout
    android:id="@+id/camera_preview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:background="#F0FFFF" />

<TextView
    android:id="@+id/textview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/profile_picture"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="40dp"
    android:textColor="#000000" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="30dp"
    android:text="@string/take_photo"
    android:layout_below="@+id/textview1"
    android:background="#87CEEB"
    android:layout_marginBottom="5dp"
    android:textColor="#000000" />

<ImageView

    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:scaleType="centerCrop"
    android:layout_below="@+id/button1"
    android:background="#BCC6CC" />



<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:ems="9"
    android:id="@+id/Name"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:layout_alignLeft="@+id/ID"
    android:layout_alignStart="@+id/ID"
    android:layout_below="@+id/imageView1"
    android:textSize="20dp"
    android:background="#87CEEB"
    android:textColor="#000000"
    android:hint="Solveig Mortensen" />



<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:layout_alignBaseline="@id/Name"
    android:text="@string/name"
    android:textSize="20dp"
    android:textColor="#000000"
    android:id="@+id/NameTitle" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="9"
    android:id="@+id/ID"
    android:layout_alignTop="@+id/Name"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_marginTop="40dp"
    android:textSize="20dp"
    android:background="#87CEEB"
    android:textColor="#000000"
    android:hint="123456" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:layout_marginTop="30dp"
    android:layout_alignBaseline="@id/ID"
    android:text="@string/id_nr"
    android:textSize="20dp"
    android:textColor="#000000" />

<Button
    android:id ="@+id/push_button"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:text="@string/edit_btn"
    android:background="@drawable/button_bg_round"
    android:padding="10dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:textSize="12dp"
    android:textColor="#000000" />

<TextView
    android:id="@+id/tvView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:layout_below="@+id/ID"
    android:layout_marginTop="20dp" />
</RelativeLayout>

My main java (named CameraActivity):

public class CameraActivity extends Activity {


Button BtnTakePhoto;
ImageView imgTakenPhoto;
Button push_button;
TextView Name;
TextView ID;

private static final int CAMERA_REQUEST = 1888;
private static final int EDIT_REQUEST = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_camera);


    push_button = (Button) findViewById(R.id.push_button);
    push_button.setOnClickListener(new push_buttonClicker());

    imgTakenPhoto = (ImageView) findViewById(R.id.imageView1);
    BtnTakePhoto = (Button) findViewById(R.id.button1);

    BtnTakePhoto.setOnClickListener(new BtnTakePhotoClicker());


}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data)     {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAMERA_REQUEST) {

        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
        imgTakenPhoto.setImageBitmap(thumbnail);
    }

    if (requestCode == EDIT_REQUEST) {

        Bundle b = getIntent().getExtras();
        Name = (TextView) findViewById(R.id.Name);
        ID = (TextView) findViewById(R.id.ID);

        Name.setText(b.getCharSequence("Name"));
        ID.setText(b.getCharSequence("ID nr"));
    }

}

    class BtnTakePhotoClicker implements Button.OnClickListener

{

    @Override
    public void onClick(View v) {
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, CAMERA_REQUEST);
    }
}class push_buttonClicker implements Button.OnClickListener{
public void onClick(View v){
    Intent Intent = new Intent(CameraActivity.this, SecondActivity2.class);
    CameraActivity.this.startActivityForResult(Intent, EDIT_REQUEST);
}}}

AND my secondActivity.java:

public class SecondActivity2 extends AppCompatActivity {
 TextView tvView;
EditText EditName;
EditText EditID;
Button buttonCancel;
Button buttonSave;
CheckBox checkBox;
TextView Name;
TextView ID;

private static final int RESULT_OK = 10;
//private static final int RESULT_CANCELED = 2;

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


    // CheckBox Yes = (CheckBox) findViewById(R.id.Yes);
   //  CheckBox NO = (CheckBox) findViewById(R.id.NO);

    buttonSave = (Button) this.findViewById(R.id.buttonSave);


    buttonCancel = (Button) findViewById(R.id.buttonCancel);

    EditName = (EditText) findViewById(R.id.EditName);
    EditID = (EditText) findViewById(R.id.EditID);

   buttonSave.setOnClickListener(new OnClickListener() {
                                     public void onClick(View view) {


                                         Intent data = new Intent();


                            data.putExtra("name",    EditName.getText().toString());
                                         data.putExtra("ID", EditID.getText().toString());


                                         setResult(RESULT_OK, data);
                                         finish();
                                     }
                                 });}}

change your code inside onActivityResult under EDIT_REQUEST condition

String name = data.getStringExtra("name");
String ID = data.getStringExtra("ID");

Name.setText(name);
ID.setText(ID);

no need to create a Bundle there, it will solve your problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM