【问题标题】:How to display EditText input in another activity when Radio Button is checked?选中单选按钮时如何在另一个活动中显示 EditText 输入?
【发布时间】:2016-02-05 03:07:08
【问题描述】:

我目前正在从事这项活动(ChallengeNew52 类),其中我有一组 RadioGroup。在这个 RadioGroup 中,我有一个位于 RadioButton (id.rButtonwithGoal) 下的 EditText (id.etGoalNew)。

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

代码没有给出错误,应用程序启动正常但它没有显示我想要的。希望您可以检查是什么冲突或编码。

这是该活动的代码:

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

这是我对其他活动的编码方式:

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"));
    }
}

【问题讨论】:

  • 问题是challengetab 活动在点击startSaving 后没有填充其TextViews 吗?
  • 它正在与另一个 textView 一起工作,这是我试图在挑战选项卡中的 textview (id.goalView) 中显示输入的特定 EditText (id.etGoalNew)显示。

标签: java android android-edittext android-radiogroup android-radiobutton


【解决方案1】:

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

当您为"goalName" 额外设置Intent 时,请尝试在点击侦听器中执行此操作:

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

【讨论】:

  • 感谢乔治·穆里根爵士!这成功了。非常感谢你! :) 用户将输入的 etGoalName 显示在挑战选项卡的goalView 中!非常感谢 :) 竖起大拇指 +1
【解决方案2】:

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

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");
}

【讨论】:

  • 这不只是一种与问题相同的速记方式吗?不知道这将如何解决问题。
【解决方案3】:
 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);

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 2015-01-07
    • 2020-11-24
    • 2013-12-06
    • 2019-05-31
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多