当前位置: 首页 > 知识库问答 >
问题:

活动从可Parcelable对象接收空值

须景辉
2023-03-14

我正在使用一个可打包对象来传递一个意图。我的对象看起来是这样的

在此输入代码公共类配方实现Parcelable{private List Recipe=null;private List firedents=null;private String preparation;

public Recipe(List<String> recipe, List<String> ingredients,
        String preparation) {
    this.recipe = recipe;
    this.ingredients = ingredients;
    this.preparation = preparation;
}

public Recipe(Parcel source) {

    source.readStringList(recipe);
    source.readStringList(ingredients);
    this.preparation = source.readString();
}

public List<String> getRecipe() {
    return recipe;
}

public List<String> getIngredients() {
    return ingredients;
}

public String getPreparation() {
    return preparation;
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeStringList(recipe);
    dest.writeStringList(ingredients);
    dest.writeString(preparation);

}

public static final Parcelable.Creator<Recipe> CREATOR = new Creator<Recipe>() {

    @Override
    public Recipe[] newArray(int size) {
        return new Recipe[size];
    }

    @Override
    public Recipe createFromParcel(Parcel source) {
        return new Recipe(source);
    }
};}
enter code here @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recipe);

    dbMan = new XmlManager();
    try {
        db = dbMan.parse();
    } catch (XmlPullParserException e) {
        System.err.println("XmlPullParserException " + e.getMessage());
        e.printStackTrace();
    } catch (IOException e) {
        System.err.println("IO Excepion " + e.getMessage());
        e.printStackTrace();
    }

    // get the listview
    expListView = (ExpandableListView) findViewById(R.id.expandableListView1);

    // preparing list data
    prepareListData();

    listAdapter = new MyBaseExpandableListAdapter(this, listDataHeader,
            listDataChild);

    // setting list adapter
    expListView.setAdapter(listAdapter);
    // Listview on child click listener
    expListView.setOnChildClickListener(new OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView parent, View v,
                int groupPosition, int childPosition, long id) {
            sendChildList = listDataChild 
                    .get(listDataHeader.get(groupPosition))
                    .get(childPosition).toString();
            sendRecipe = dbMan.getRecipyByCriteria(db, sendChildList);

            Toast.makeText(getApplicationContext(),
                    "sendet" + sendChildList, Toast.LENGTH_LONG).show();
            Intent in = new Intent(getApplicationContext(),
                    ShowRecipe.class);
            in.putExtra("sendRecipe", sendRecipe);

            startActivity(in);
            return false;
        }
    });
}

我调试了这部分代码,我知道sendRecipe对象是实例化的,数据是正确的。所以我把这个东西放在意向性上,然后把它发送到下一个活动

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_recipe);
    findeRecipe = (Recipe)getIntent().getParcelableExtra("sendRecipe");

在这个地方,Intent会收到null。有趣的是,当我发送一个字符串或int时,它的接收是正确的。我坐在这里,检查了一天,调试了这个东西,阅读了关于Parcelable的问题,做每件事都正确,我的事情,但没有一件是正确的。

共有1个答案

龙越彬
2023-03-14

问题可能是您使用了应用程序上下文:Intent in=new Intent(getApplicationContext()...尝试传递活动。

 类似资料:
  • 有人能看到代码出了什么问题吗?很明显,它就在某个地方,甚至可能在子任务类中,因为一构造任务并尝试打包它,仿真器就会崩溃。

  • 问题内容: 我有一个AngularJSWeb应用程序,看起来它正确地将JSON发送到Tomcat服务器,但是服务器接收到空值。这个问题没有帮助,因为我的属性名称已经是小写字母,这个问题也没有帮助,因为我已经有了符号。 编辑:正如评论中指出的那样,我实际上没有这种表示法。 我读错了。 这是有问题的服务器方法: 这是它希望接收的Kind对象: 这是发出请求的方法: 这是发送到服务器的JSON: 注意:

  • 我有一个AngularJS Web应用程序,它看起来像是正确地将JSON发送到Tomcat服务器,但是服务器接收空值。这个问题没有帮助,因为我的属性名称已经是小写的,这个问题没有帮助,因为我已经得到了符号。编辑:正如评论中指出的,我实际上没有这个符号。我看错了。 下面是有问题的服务器方法: 以下是它期望接收的Kind对象: 以下是发出请求的方法: 这是发送到服务器的JSON: 注意:我假设我可以不

  • 我正在编写一个SPRING控制器来管理一些实体,在尝试编辑现有对象时遇到了问题。 以下是生成问题的get/post映射: 类别类别如下: 当我试图编辑一个对象时,正如您在日志底部看到的,它直接来自DB,但当它来自时,字段为。 ajax调用是这样完成的: 我已经读过了,但是如果我把放到 即使我把属性。 我知道我可以通过另一次调用DB来获得旧数据,但我希望有一种最干净的方法 解决方案:我已经解决了编辑

  • 我正在尝试使用适配器运行我的应用程序,但在执行此操作时,我遇到了以下错误: ReviewActivity StandupPlayerMain.java

  • 以前一切正常,现在当我运行我的应用程序时,它开始产生这个错误,我的应用程序一直在崩溃。 此错误不断出现 android.content.Intentandroid.content.ntent.putExtra(java.lang.String, int)'对空对象引用 这是我的飞溅活动代码。 Oncreate方法代码如下 @重写受保护的void onCreate(Bundle savedInsta