无法将变量值分配给extra.getString();

时间:2015-05-08 12:49:07

标签: android string android-intent

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手机上进行测试时,该应用程序可以正常工作。

感谢大家的帮助!

5 个答案:

答案 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");