getIntent.getSerializable()返回null

时间:2016-08-02 10:14:28

标签: android android-intent

我尝试将Part对象从一个活动发送到另一个活动。但是我仍然得到空指针异常。这是我发送它的方式:

 Intent intent = new Intent(this,InvActivity.class);
        intent.putExtra("Part",part);
        startActivity(intent);

这就是我尝试接收它的方式:

@Override
    protected void onRestart() {
        super.onRestart();
        Log.e(TAG, "onRestart: ");

        if(getIntent().getExtras().getSerializable("Part") != null) {
            Part part = (Part) getIntent().getSerializableExtra("Part");
            Log.e(TAG, "onRestart: "+ part.getName() );
        }
    }

然而它不起作用。我做错了什么?

3 个答案:

答案 0 :(得分:2)

getIntent().getExtras()返回Bundle,您正在intent Bundle直接Serializable Intent Intentif(getIntent().getSerializable("Part") != null) { Part part = (Part) getIntent().getSerializableExtra("Part"); Log.e(TAG, "onRestart: "+ part.getName() ); } 直接来自 android:windowSoftInputMode="adjustPan" 。像这样:

 android:windowSoftInputMode="adjustResize"

答案 1 :(得分:1)

使用下面我使用Serializable

进行投射的代码
Intent intent = new Intent(this,InvActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("Part", (Serializable) part);
intent.putExtras(bundle);
startActivity(intent);      



Part part;
    part = (Part) getIntent().getExtras().getSerializable("Part");      

注意:

public class Part implements Serializable{
}

答案 2 :(得分:1)

if(getIntent().getExtras().getSerializable("Part") != null) {
        Part part = (Part) getIntent().getExtras().getSerializable("Part");
        Log.e(TAG, "onRestart: "+ part.getName() );
    }

应该那样工作。

Ps:你不应该在onRestart上使用它。如果你开始等待结果的活动,这可能是最好的。