我正在制作一个应用程序,其中我已经进行了 2 个屏幕;屏幕 A 和屏幕 B。在这两个屏幕中,我都使用了编辑文本和 TextView 。
在屏幕 A 的编辑文本中,我获取手机号码,通过单击 TextView 将其发送到屏幕 B 并将其设置在屏幕 B 的编辑文本上。此过程运行成功。
这是我在屏幕 A 上的代码 -
tvredeem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(getApplicationContext(),
RedeemPoints.class);
i.putExtra(mobileno1, mobileno1);
startActivity(i);
}
});
这是我在屏幕 B 上的代码 -
mobileno = (EditText) findViewById(R.id.mobileno);
Bundle bundle = getIntent().getExtras();
String message = bundle.getString("mobileno1");
mobileno.setText(message);
现在,问题是当我直接进入屏幕 B 时,它在这一行给出空指针异常 - mobileno.setText(message); 并且应用程序正在强行关闭。
当我进入屏幕 B 时,我应该使用什么“如果”条件,它不会给出空指针异常并且编辑文本应该为空白。
当我直接进入屏幕 B 时,下面的代码应该可以工作。 在屏幕 B 的 editText 上设置文本时,我想运行此代码...
mobileno.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
String inputNo = s.toString();
if (inputNo.length() == 10) {
getmobno = inputNo;
new Homedata().execute();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
} );
最佳答案
改变
i.putExtra(mobileno1, mobileno1);
到
i.putExtra("mobileno1", mobileno1);
您必须传递键值对。您也在键中传递 mobileno1
的值。所以你不能使用 key = "mobileno1"检索它
为了避免空指针使用这个:
if (getIntent().getStringExtra("mobileno1") != null) {
edtnum.setText(getIntent().getStringExtra("mobileno1"));
}
希望它清楚:)
编辑:
如果你想执行这样的代码,请确保在调用 setText
之前添加 TextChangedListener
。
例子:
这段代码对我不起作用:
setContentView(R.layout.activity_main);
e = (EditText) findViewById(R.id.etext);
e.setText(myString);
e.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
System.out.println("on");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
System.out.println("after");
}
});
但是如果我稍后调用 setText
来添加 textChangedListener
,它工作正常,并且我能够在控制台中看到系统输出。
setContentView(R.layout.activity_main);
e = (EditText) findViewById(R.id.etext);
e.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
System.out.println("on");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
System.out.println("after");
}
});
e.setText(myString);
希望对您有所帮助。
关于android - 使用 Intent 将值(value)从一项 Activity 传递到另一项 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24626722/