java - 毕加索 - 目标不能为空

标签 java android

每当打开一个新 Intent 时,它会在该页面上停留一秒钟,然后应用程序将被强制关闭。有人帮我解决这个运行时错误。

public class FoodDetails extends AppCompatActivity {


ImageView img_food;

String foodId="";
FirebaseDatabase database;
DatabaseReference foods;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_food_details);

    database=FirebaseDatabase.getInstance();
    foods = database.getReference("foods");

    numberButton = (ElegantNumberButton)findViewById(R.id.number_button);
    btncart = (FloatingActionButton)findViewById(R.id.btncart);
    food_description = (TextView)findViewById(R.id.food_description);
    food_name = (TextView)findViewById(R.id.food_name);
    food_price = (TextView)findViewById(R.id.food_price);
    img_food = (ImageView)findViewById(R.id.img_food);

    collapsingToolbarLayout = (CollapsingToolbarLayout)findViewById(R.id.collapsing);

    collapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExtendedAppbar);
    collapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppbar);

    if(getIntent()!=null)
        foodId = getIntent().getStringExtra("FoodId");
    if(!foodId.isEmpty()){
        getDetailFood(foodId);
    }
}

private void getDetailFood(String foodId) {
    foods.child(foodId).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Food food = dataSnapshot.getValue(Food.class);
            Picasso.with(getBaseContext()).load(food.getImage())
                    .into(img_food);

            collapsingToolbarLayout.setTitle(food.getName());
            food_price.setText(food.getPrice());
            food_name.setText(food.getName());
            food_description.setText((food.getDescription()));
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

错误的堆栈跟踪,这是错误所在的行 在 com.k.menu.FoodDetails$1.onDataChange(FoodDetails.java:63)

    01-14 21:53:25.446 10015-10015/com.k.menu E/AndroidRuntime: FATAL EXCEPTION: main
                                                        Process: com.k.menu, PID: 10015
                                                        java.lang.IllegalArgumentException: Target must not be null.
                                                            at com.squareup.picasso.RequestCreator.into(RequestCreator.java:618)
                                                            at com.squareup.picasso.RequestCreator.into(RequestCreator.java:601)
                                                            at com.k.menu.FoodDetails$1.onDataChange(FoodDetails.java:64)
                                                            at com.google.android.gms.internal.zzegf.zza(Unknown Source)
                                                            at com.google.android.gms.internal.zzeia.zzbyc(Unknown Source)
                                                            at com.google.android.gms.internal.zzeig.run(Unknown Source)
                                                            at android.os.Handler.handleCallback(Handler.java:751)
                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                            at android.os.Looper.loop(Looper.java:154)
                                                            at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

我的模型食物课

public class Food {

private String Name,Image,Description,Price,MenuId;

public Food() {
}

public Food(String name, String image, String description, String price, String menuId) {
    Name = name;
    Image = image;
    Description = description;
    Price = price;
    MenuId = menuId;
}

public String getName() {
    return Name;
}

public void setName(String name) {
    Name = name;
}

public String getImage() {
    return Image;
}

public void setImage(String image) {
    Image = image;
}

public String getDescription() {
    return Description;
}

public void setDescription(String description) {
    Description = description;
}

public String getPrice() {
    return Price;
}

public void setPrice(String price) {
    Price = price;
}

public String getMenuId() {
    return MenuId;
}

public void setMenuId(String menuId) {
    MenuId = menuId;
}

最佳答案

实际上,您没有获得任何数据的原因是您的数据库引用。在您的数据库结构中,您有一个名为“Foods”的子项,您正在获取的子项是“foods”。改变

foods = database.getReference("foods");

foods = database.getReference("Foods");

关于java - 毕加索 - 目标不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241398/

相关文章:

java - 如何在我的应用程序中使用 ua-parser?

java - 如果正在运行,Android 服务会与 Activity 对话吗?

java keytool 给出 "final block not properly padded"

android - 如何使用一些预定义的文本和图像打开 Facebook Write Post

android - 使用不同布局时的 Listview 回收

Android API 设置音量级别

java - 如何使用列表在我的布局中的工具栏中放置一个按钮?

java - ManyToOne 映射的延迟加载在 eclipselink 中不起作用

android - AsyncTask 中未显示 ProgressDialog

android - 两次运行 SonarQube Analysis 会将所有以前的问题标记为已删除