选中单选按钮后,如何在另一个 activity 中显示 EditText 输入?

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

我目前正在研究这个 activity (class ChallengeNew52),其中我有一组 RadioGroup。在此 RadioGroup 中,我有一个位于 RadioButton (id.rButtonwithGoal) 下的 EditText (id.etGoalNew)。

当这个 RadioButton 被选中(激活)时,它应该允许用户在 EditText 中 access/type 并显示他们输入的内容到另一个 activity。我想我完成了启用部分,但现在的问题是将它显示给另一个 activity (class challengetab)。我似乎无法在这个特定的 RadioButton 下从这个 EditText 中正确显示字符串。本"Switch"中另一种情况下的(endlessMode)正在显示。

代码没有出错,应用程序启动正常,但没有显示我想要的内容。希望你能检查一下是什么冲突或编码。

这是来自 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

这是我如何编码另一个 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"));
    }
}

在用户完成填充后,您永远不会从名为 etGoalNewEditText 中获得最终值。

在为 "goalName" extra 设置 Intent 时尝试在点击侦听器中执行此操作:

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

您需要在第二个 activity 中获取捆绑包: 试试这个:

Bundle bundle = getIntent().getExtras();
if(bundle!=null){
    String value1 = bundle.getString("resultShow");
    String value2 = bundle.getString("goalName");
    String value3 = bundle.getString("titleChallenge");
    String value4 = bundle.getString("resultShow");
}
 Intent iStartSaving = new Intent(getApplicationContext(), challengetab.class);


            //******** Use getText() for getting the text from edit text &  initialize the string i.e->"resultString","goalTitle" etc
            resultString = moIncome.getText().toString();
            goalTitle = etGoalNumber.getText().toString();
            challengetitle = etGoalNew.getText().toString();

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

            ChallengeNew52.this.startActivity(iStartSaving);