Ammar Samater
Ammar Samater

Reputation: 539

problems with activity layout when back button is pressed

I have this activity with EditViews and button. When the button is pressed I move on to a new activity. the problem is when the back button is pressed. The EditViews are not visible. What is expected is that the views and the text that was entered are visible. Also The buttons that appear are from the second activity and not the first.

    <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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.ammar.android.dailyjobsiteinspection2.MainActivity1Activity">

<ScrollView
android:layout_width="fill_parent"
android:layout_height="350dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/scrollView">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:id="@+id/linearLayout">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:text="New Text"
        android:id="@+id/textView"
        android:layout_gravity="center_horizontal"
        android:layout_weight="1"
        android:visibility="invisible" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="70dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:id="@+id/editText"
        android:layout_gravity="center"
        android:hint="Inspector ID"
        />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:text="New Text"
        android:id="@+id/textView2"
        android:layout_gravity="center_horizontal"
        android:layout_weight="1"
        android:visibility="invisible" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="70dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:id="@+id/editText2"
        android:layout_gravity="center"
        android:hint="Site Name" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:text="New Text"
        android:id="@+id/textView3"
        android:layout_gravity="center_horizontal"
        android:visibility="invisible"
        android:layout_weight="1" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="70dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:id="@+id/editText3"
        android:layout_gravity="center"
        android:hint="Site Address" />

    <Button
        android:layout_width="160dp"
        android:layout_height="60dp"
        android:text="Start"
        android:id="@+id/button3"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_horizontal"
        android:onClick="start"
        android:layout_margin="5dp" />
</LinearLayout>
</ScrollView>

</RelativeLayout>

Here is the Java code:

    import android.content.Intent;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.EditText;

    public class MainActivity1Activity extends ActionBarActivity {


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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main_activity1, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

public void start(View view){
    EditText editText1 = (EditText) findViewById(R.id.editText);
    EditText editText2 = (EditText) findViewById(R.id.editText2);
    EditText editText3 = (EditText) findViewById(R.id.editText3);

    if(!allFieldsEntered(editText1, editText2, editText3)){
        com.ammar.android.dailyjobsiteinspection2.Message.message(this, "All fields must be filled before starting an Audit ");
    }else{
        Intent intent = new Intent(this, MainActivity11Activity.class);
        Bundle bundle = getDataBundle(editText1, editText2, editText3);
        intent.putExtras(bundle);
        setContentView(R.layout.activity_main_activity11);
        startActivity(intent);
    }
}

private Bundle getDataBundle(EditText editText1, EditText editText2, EditText editText3) {
    Bundle bundle = new Bundle();
    bundle.putString(MainActivity.INSPECTORID, editText1.getText().toString());
    bundle.putString(MainActivity.SITENAME, editText2.getText().toString());
    bundle.putString(MainActivity.SITEADDRESS, editText3.getText().toString());
    return bundle;
}

private boolean allFieldsEntered(EditText editText1, EditText editText2, EditText editText3) {
    return !(editText1.getText().toString().matches("")
            || editText2.getText().toString().matches("")
            || editText3.getText().toString().matches(""));
}
}

Here is the second activity:

    <LinearLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.ammar.android.dailyjobsiteinspection2.MainActivity11Activity">


<ScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:id="@+id/scrollView"
    android:layout_gravity="center_horizontal"
    android:layout_weight="1">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/layout"></LinearLayout>
</ScrollView>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:id="@+id/layout2">
    android:layout_gravity="center_horizontal">

    <TextView
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="New Text"
        android:id="@+id/textView4"
        android:layout_weight="1"
        android:visibility="invisible" />

    <Button
        android:layout_width="160dp"
        android:layout_height="fill_parent"
        android:text="Save"
        android:id="@+id/button4"
        android:onClick="save" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView5"
        android:layout_weight="1"
        android:visibility="invisible"/>

    <Button
        android:layout_width="160dp"
        android:layout_height="fill_parent"
        android:text="Submit"
        android:id="@+id/button5"
        android:onClick="submit" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView6"
        android:layout_weight="1"
        android:visibility="invisible"/>
</LinearLayout>

</LinearLayout>

and the Java code:

    import android.app.ActionBar;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Typeface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.Layout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import java.util.ArrayList;


public class MainActivity11Activity extends ActionBarActivity {

private ArrayList<RadioGroup> radioGroupArrayList;
private String inspectorId;
private String siteName;
private String siteAddress;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity11);
    setFields();
    setUI();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main_activity11, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

private void setFields() {
    Intent intentBundle = getIntent();                          // get intent
    Bundle bundle = intentBundle.getExtras();                   // get bundle from intent
    inspectorId = bundle.getString(MainActivity.INSPECTORID);
    siteName = bundle.getString(MainActivity.SITENAME);
    siteAddress = bundle.getString(MainActivity.SITEADDRESS);
}

private void setUI() {
    TextView textView;
    radioGroupArrayList = new ArrayList<RadioGroup>();
    LinearLayout ll = (LinearLayout) this.findViewById(R.id.layout);
    int count = 0;
    for(int i = 0; i<6; i++){
        int id = getResources().getIdentifier("PreStart"+ i, "array"  , getPackageName());
        String [] questions = getResources().getStringArray(id);
        textView = new TextView(this);
        textView.setText(questions[0]);
        textView.setTextSize(24);
        textView.setTypeface(null, Typeface.BOLD);
        ll.addView(textView);
        TextView textView1;
        TextView textView2;
        RadioGroup radioGroup;
        RadioButton radioButton1;
        RadioButton radioButton2;
        RadioButton radioButton3;
        for (int j = 1; j< questions.length; j++){
            textView1 = new TextView(this);
            textView1.setText(questions[j]);
            textView1.setTextSize(18);

            radioGroup = new RadioGroup(this);
            radioGroupArrayList.add(radioGroup);
            radioButton1 = new RadioButton(this);
            radioButton2 = new RadioButton(this);
            radioButton3 = new RadioButton(this);
            radioButton1.setText("Yes");
            radioButton2.setText("No");
            radioButton3.setText("NA");
            radioButton1.setId(count);
            radioButton2.setId(count+1);
            radioButton3.setId(count+2);
            count = count + 3;
            radioGroup.addView(radioButton1);
            radioGroup.addView(radioButton2);
            radioGroup.addView(radioButton3);
            radioButton1.setPadding(20, 20, 100, 20);
            radioButton2.setPadding(20, 20, 100, 20);
            radioButton3.setPadding(20, 20, 100, 20);
            radioGroup.setOrientation(LinearLayout.HORIZONTAL);



            textView2 = new TextView(this);
            textView2.setVisibility(View.INVISIBLE);
            ll.addView(textView1);
            ll.addView(radioGroup);
            ll.addView(textView2);
        }
    }
    EditText editText = new EditText(this);
    editText.setId(R.id.editText11);
    editText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));
    editText.setHint("Enter Comments Here");
    ll.addView(editText);
}


public void save(View view){

    AnswerListCreator answerCreator = new AnswerListCreator(radioGroupArrayList);
    String[] answerList = answerCreator.getAnswerList();
    String commentLog = ((EditText) findViewById(R.id.editText11)).getText().toString();
    DBHelper dbHelper = new DBHelper(this);
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    Site site = new Site(inspectorId, siteName, siteAddress, answerList, commentLog, 0);
    dbHelper.insertSite(db, site);

    // go back to main
    Intent intent = new Intent(this, MainActivity.class);
    setContentView(R.layout.activity_main);
    startActivity(intent);
    db.close();
    finish();
}

public void submit(View view) {

    AnswerListCreator answerCreator = new AnswerListCreator(radioGroupArrayList);
    if (!answerCreator.isComplete()) {
        com.ammar.android.dailyjobsiteinspection2.Message.message(this, "All fields must be checked");
    } else {
        answerCreator = new AnswerListCreator(radioGroupArrayList);
        String[] answerList = answerCreator.getAnswerList();
        String commentLog = ((EditText) findViewById(R.id.editText11)).getText().toString();
        DBHelper dbHelper = new DBHelper(this);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Site site = new Site(inspectorId, siteName, siteAddress, answerList, commentLog, 1);
        dbHelper.insertSite(db, site);

        // go back to main
        Intent intent = new Intent(this, MainActivity.class);
        setContentView(R.layout.activity_main);
        startActivity(intent);
        db.close();
        finish();
    }
}
}

Upvotes: 1

Views: 225

Answers (1)

arsena
arsena

Reputation: 1975

You are changing first Activity's View before calling StartActivity.

Remove this in MainActivity1Activity: setContentView(R.layout.activity_main_activity11);

Furthermore, if you want to keep view state in MainActivity1Activity don't start it again. Just call finish() in second activity.

Upvotes: 3

Related Questions