Search code examples
javaandroidandroid-edittextandroid-radiogroupandroid-radiobutton

How to display EditText input in another activity when Radio Button is checked?


I am currently working on this activity (class ChallengeNew52) wherein I have a set of RadioGroup. In this RadioGroup, I have an EditText (id.etGoalNew) that is under a RadioButton (id.rButtonwithGoal).

When this RadioButton is checked (active), it is suppose to enable the user to access/type in the EditText and also display what they typed to another activity. I think I accomplished the enabling part but the problem now is displaying it to another activity (class challengetab). I can't seem to display the string correctly from this EditText under this particular RadioButton. The (endlessMode) that is in another case in this "Switch" is displaying.

The code doesn't give an error, the app launches fine yet the it doesn't display what I want. Hope you can check what is the conflict or with the coding.

Here is the code from that activity:

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;

public class ChallengeNew52 extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {

RadioGroup rgInputNew;
EditText etGoalNew;
EditText moIncome;
EditText etGoalNumber;
String challengetitle;
String resultString;
String goalTitle;

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

    //Strings
    final String saveTitle = getResources().getString(R.string.ctabtitle_fiftytwo);

    //Radio Group Enable EditText (goal) input
    rgInputNew = (RadioGroup) findViewById(R.id.rgGoal);
    rgInputNew.setOnCheckedChangeListener(ChallengeNew52.this);

    // EditTexts
    moIncome = (EditText) findViewById(R.id.inputIncomeBar52);
    etGoalNumber = (EditText) findViewById(R.id.inputGoalNumber52);
    etGoalNew = (EditText) findViewById(R.id.inputGoalBar52);
    actv(false);

    // Button Call
    Button startSaving = (Button) findViewById(R.id.buttonStartSaving);

    /*
    BUTTON CLICK!
     */
    startSaving.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            //--Call Equation
            mathFiftyTwo();

            //--To Display to Another Activity ("challengetab" java)
            Intent iStartSaving = new Intent(getApplicationContext(), challengetab.class);

            iStartSaving.putExtra("resultShow", resultString);
            iStartSaving.putExtra("goalName", goalTitle);
            iStartSaving.putExtra("titleChallenge", challengetitle);
            iStartSaving.putExtra("resultShow", resultString);

            ChallengeNew52.this.startActivity(iStartSaving);
        }
    });//--onClickListener

    //--Call outs for the string Challenge Title
    challengetitle = saveTitle;
}//--onCreate

//--To activate Edit Text with Radio Select. (METHOD)
@Override
public void onCheckedChanged (RadioGroup rgInputNew, int rButtonWithGoal) {
    //--String
    final String endlessMode = getResources().getString(R.string.ctabnogoal);

    switch (rButtonWithGoal) {
        case R.id.rButtonWithGoal:
            actv(true);
            dsply(true);
            break;

        case R.id.rbEndlessSaving:
            actv(false);
            //--Call outs for the string Endless Saving Mode
            goalTitle = endlessMode;

            break;
    }
}//--end onCheckedChanged

//--display text method for goalTitle
private void dsply (final boolean active) {
    //--Strings
    final String goalNew = etGoalNew.getText().toString();

    etGoalNew.setEnabled(active);
    if (active) {
        goalTitle = goalNew;
    }
}

//--actv method for activating of Radio Button's EditText
private void actv(final boolean active) {

    etGoalNew.setEnabled(active);
    if (active) {
        etGoalNew.requestFocus();
    }
    etGoalNumber.setEnabled(active);
    if (active) {
        etGoalNumber.requestFocus();
    }
}
 }//--End class

Here is how I coded the other activity:

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class challengetab extends AppCompatActivity {

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

        //TextView for Goals
        TextView goalView = (TextView)findViewById(R.id.cGoalName);
        goalView.setText(getIntent().getExtras().getString("goalName"));

        //TextView for Computation

        TextView resultView = (TextView)findViewById(R.id.cValueSave);
        resultView.setText(getIntent().getExtras().getString("resultShow"));

        // Text View for Title

        //TextView: Receive Challenge Title when button is clicked
        TextView incomeView = (TextView)findViewById(R.id.cTitleChallenge);
        incomeView.setText(getIntent().getExtras().getString("incomeTitle"));
        incomeView.setText(getIntent().getExtras().getString("titleChallenge"));
    }
}

Solution

  • You are never getting the final value from the EditText named etGoalNew after the user is done populating it.

    Try doing this in the click listener when you are setting up the Intent for the "goalName" extra:

    if(rgInputNew.getCheckedRadioButtonId() == R.id.rButtonWithGoal) {
        iStartSaving.putExtra("goalName", etGoalNew.getText().toString());
    } else {
        iStartSaving.putExtra("goalName", goalTitle);
    }