【问题标题】:Taken value from edittext and passing it as a string to another activity从edittext中获取值并将其作为字符串传递给另一个活动
【发布时间】:2013-04-17 11:25:34
【问题描述】:

我希望从edittext 字段中获取值并将其作为字符串传递给另一个活动。我已经完成了如下所示。我认为它可以工作,但我希望能够打印出文本以查看变量值是否实际传递了

但是一旦我输入Log.d("PJM",value);,活动就会关闭并出现错误

主屏幕活动

public class MainScreen extends Activity {

Button btnSearch, btnFavourites;
EditText enterDefinition;
Editable word;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_screen);

    btnSearch=(Button)findViewById(R.id.btnSearch);
    btnFavourites=(Button)findViewById(R.id.btnFavourites);
    enterDefinition=(EditText)findViewById(R.id.enterDefinition);

    String text = enterDefinition.getText().toString();

    Intent i = new Intent(this, Definition.class);
    i.putExtra("KEY",text);
    //startActivity(i);

    //Intent i = new Intent(this, Definition.class);
    //i.putExtra("text_Label",theText);
    //startActivity(i);

定义活动

public class Definition extends Activity {

Button btnSend, btnSaveFave, btnReturn;
EditText enterDefinition;
String value;
TextView definition;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_definition);

    btnSend=(Button)findViewById(R.id.btnSend);
    btnSaveFave=(Button)findViewById(R.id.btnSaveFave);
    btnReturn=(Button)findViewById(R.id.btnReturn);
    enterDefinition=(EditText)findViewById(R.id.enterDefinition);
    definition=(TextView)findViewById(R.id.tvDefinition);

    definition.setText("some text");

    Bundle extras = getIntent().getExtras();
    String value = null; 
    if (extras != null) {
      value = extras.getString("KEY");
    }
    else {
      value = "None";
    }
    Log.d("text entered", value);
    Toast.makeText(getBaseContext(), value, Toast.LENGTH_LONG).show();

【问题讨论】:

  • 你在 Manifest 中声明了 Definition.class 吗??
  • 是的,它是在清单中声明的​​,每次我运行它时,它都会在 logcat 中显示为 none
  • 我假设您错误地注释掉了 startActivity(i)?
  • 没有,因为如果我取消注释它,它只会立即启动“定义活动”,而不会让我有机会在“主屏幕”中输入“editText”

标签: android eclipse string android-intent android-activity


【解决方案1】:

你想要:

String value = null; 
if (extras != null) {
  value = extras.getString("KEY");
}
else {
  value = "None"
}
Log.d("PJM", value);

【讨论】:

  • 好的,那么 Bundle 有问题了。你能发布完整的代码吗?你确定在第一个活动中调用 startActivity(i, ) 吗?
  • 其实更好。在调试模式下运行,在第二个活动的 if 语句处下一个断点,然后通过将鼠标指针悬停在变量上来检查 extras 的内容。
  • 看看我在第一个问题中编辑的代码,我没有启动活动,因为它只是意味着一旦我启动我的应用程序,它就会直接运行到定义活动中。我应该将代码传递给 onClickListener 以运行该活动吗?
  • 是的,我就是这么想的。那么我在这个过程中的哪个地方使用了这个 Intent 呢?在您发布的代码中,它完全是多余的。当然,如果你有一个按钮点击监听器然后启动定义活动,那么你必须把意图放在它的 onClick 方法中,并从那里调用 startActivity(i)。
  • ie onClick (View v) { Intent i = new Intent(this, Definition.class); i.putExtra("KEY",text);开始活动(一); } 这样,意图与 Bundle 数据一起发送。
猜你喜欢
  • 1970-01-01
  • 2016-03-08
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多