字符串值为null

时间:2013-08-14 08:57:43

标签: android android-intent null

我有ListView,每行包含TextView。在用户点击时,我获取TextView的值并将其存储在String变量中,并且用户被导航到另一个他/她需要在所述{{1}上输入一些数据的活动}。为了不丢失第一个活动的信息状态,我必须使用TextView,然后使用方法startActivityForResult()从第二个活动中获取信息。

问题是:我需要将值与有问题的TextView的值进行比较,但是应该包含TextView值的String变量为null。

在启动第二个活动之前,我对String值进行了烘烤,并返回了正确的字符串,但不在onActivityResult()中,返回null。

为什么会这样?我使用过的Intent是否保留了已打开活动的所有信息?

ListView的onItemClick

onActivityResult()

onActivityResult

@Override
        public void onItemClick(AdapterView<?> listView, View itemView, int itemPosition, long itemID)
        {


            clickedError = ((TextView)itemView).getText().toString();
            String errorIDQuery = "SELECT _id FROM " + TABLE_ERROR + " WHERE error_description LIKE '" + clickedError + "';";

                Cursor getErrorID = db.rawQuery(errorIDQuery, null);
                getErrorID.moveToFirst();
                errorID = getErrorID.getInt(0);

            Intent intent = new Intent(Repair.this, Material.class);
            intent.putStringArrayListExtra("materialList", materialList);
            startActivityForResult(intent, 1);
            Toast.makeText(getApplicationContext(), clickedError, Toast.LENGTH_LONG).show();
        }

3 个答案:

答案 0 :(得分:2)

我的猜测:在移动到第二个活动时,活动被销毁并重新启动。这很容易通过活动生命周期方法(onCreate / onRestart / etc)中的日志消息进行确认。

以下链接可能有助于在活动切换期间保留数据:http://developer.android.com/training/basics/activity-lifecycle/recreating.html

答案 1 :(得分:0)

将String值设为静态,以便保留其值。或者你可以使用共享偏好来节省价值并在以后使用它。

答案 2 :(得分:0)

  

如果它不问我那就行了

TextView textviewDate=(TextView)findViewById(R.id.yourtextviewid);
clickedError=textviewDate.getText().toString();