Android新手,我目前正尝试将String
值从一个Activity
发送到另一个public void golf(View view) {
Intent intent = new Intent(SearchSport.this, EventList.class);
intent.putExtra("type", "golf");
startActivity(intent);
。我已经浏览了几个线程,如How to use putExtra() and getExtra() for string data作为答案,但我无法让它发挥作用。
我想发送的字符串是:
String type;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_list);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if ( extras != null)
type = extras.getString("type");
if (type == "golf"){
TextView eventName = (TextView) findViewById(R.id.EOName);
TextView eventTime = (TextView) findViewById(R.id.EOTime);
TextView eventLocation = (TextView) findViewById(R.id.EOLocation);
DatabaseOperations dop = new DatabaseOperations(ctx);
Cursor CR = dop.getInformation(1);
CR.moveToFirst();
eventName.setText(CR.getString(1));
eventTime.setText(CR.getString(7) + " " + CR.getString(8) + ". " + CR.getString(9) + " kl. " + CR.getString(10) + ":" + CR.getString(11));
eventLocation.setText(CR.getString(4));}
else {Toast toast = Toast.makeText(this, "Error in Type.", Toast.LENGTH_LONG);
toast.show();}
我的接收器看起来像
toast
我不知道这里有什么问题。每次测试时,应用都会显示TextViews
,而不是使用数据库条目中的数据填写if (type.equals("golf")){}
。
编辑:代码已根据答案进行了更改,但问题尚未解决。写if (type == "golf"){}
代替.equals
会使应用程序崩溃。
编辑2:问题解决了!修复了区分大小写,使用==
而不是if(getIntent().hasExtra("Type"))
type = getIntent().getStringExtra("Type");
,并将接收器写为
class My_Form_validation extends CI_Form_validation {
public function __construct(){
parent::__construct();
}
public function get_error_array(){
return $this->_error_array;
}
}
最后,结果是我使用的虚拟设备崩溃了应用程序,原因尚不明确。当在实际的Android手机上进行测试时,该应用程序可以正常工作。
感谢大家的帮助!
答案 0 :(得分:1)
更改区分大小写的密钥:
type = extras.getString("Type");
答案 1 :(得分:1)
尝试从String
Intent
获取Extra
时出现错误:
type = extras.getString("type");
替换为:
type = extras.getString("Type");
注意:也可以使用equals()
代替==
来比较String
if (type.equals("golf")){
答案 2 :(得分:1)
试试这个
iterator
答案 3 :(得分:1)
1)第一个键区分大小写
2)传递
Bundle bundle = new Bundle()
bundle.putString("type","golf");
intent.putExtras(bundle);
之后使用
Bundle received = i.getExtras();
received.getString("type");
答案 4 :(得分:0)
当您使用Extra传递值时。您必须使用getStringExtra();
来捕获它,并且密钥必须区分大小写。
Intent i = getIntent();
type = i.getStringExtra("Type");