0

Ich versuche, ein Restaurant apk zu schaffen, die es ein Menü in diesem Menü hat Sie gewählt, was ein bisschen Essen Sie sagen wollen, wenn Sie eine Pizza wollen und wenn Sie Pizza drücken Es öffnet sich ein anderes Menü mit verschiedenen Arten von Pizza und wenn drücken Sie die Pizza, die ich will, es sollte Sie zu einer anderen Aktivität und zeigen Sie die Details der Pizza, aber es zeigt mir nicht und ich weiß nicht, was das Problem istÖffnen Sie eine Details des Essens in einer anderen Aktivität mit Firebase

dies ist meine Nahrung Liste Aktivität

package com.example.median1.demo; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.View; 
import android.widget.Toast; 

import com.firebase.ui.database.FirebaseRecyclerAdapter; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.squareup.picasso.Picasso; 

public class FoodLIst extends AppCompatActivity { 

    RecyclerView recyclerView; 
    RecyclerView.LayoutManager layoutManager; 

    FirebaseDatabase database; 
    DatabaseReference foodList; 

    String categoryId; 
    FirebaseRecyclerAdapter<Food,FoodViewHolder>adapter; 


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

     database=FirebaseDatabase.getInstance(); 
     foodList= database.getReference("Foods"); 
     recyclerView=(RecyclerView)findViewById(R.id.recycler_food); 
     recyclerView.setHasFixedSize(true); 
     layoutManager=new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(layoutManager); 

     //get food list intent 
      if(getIntent()!=null){ 

      categoryId=getIntent().getStringExtra("CategoryId"); 
      if(!categoryId.isEmpty()&& categoryId!=null){ 

       loadListFood(categoryId); 
      } 

      } 
    } 

    private void loadListFood(String categoryId) { 

     adapter=new FirebaseRecyclerAdapter<Food, FoodViewHolder>(Food.class, 
       R.layout.food_item, 
       FoodViewHolder.class, 
       foodList.orderByChild("MenuId").equalTo(categoryId)) { 
      @Override 
      protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) { 
       viewHolder.food_name.setText(model.getName()); 
       Picasso.with(getBaseContext()).load(model.getImage()) 
         .into(viewHolder.food_image); 
       final Food local=model; 
       viewHolder.setItemClicklistener(new ItemClickListener() { 
        @Override 
        public void onClick(View view, int position, boolean isLongClick) { 
         // start new activity for the food destails 
         Intent foodDetails=new Intent(FoodLIst.this,FoodDetail.class); 
         foodDetails.putExtra("FoodId",adapter.getRef(position).getKey()); //send foood id to new activity 
         startActivity(foodDetails); 
        } 
       }); 


      } 
     }; 
     //set adapter 
     Log.d("TAG",""+adapter.getItemCount()); 
     recyclerView.setAdapter(adapter); 
    } 
} 

und dies ist meine Nahrung Details Aktivität

package com.example.median1.demo; 

import android.support.design.widget.CollapsingToolbarLayout; 
import android.support.design.widget.FloatingActionButton; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.cepheuen.elegantnumberbutton.view.ElegantNumberButton; 
import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.ValueEventListener; 
import com.squareup.picasso.Picasso; 

import java.io.File; 

public class FoodDetail extends AppCompatActivity { 


    TextView food_name,food_price,food_description; 
    ImageView food_image; 
    CollapsingToolbarLayout collapsingToolbarLayout; 
    FloatingActionButton btnCart; 
    ElegantNumberButton numberButton; 
    String foodId=""; 
    FirebaseDatabase database; 
    DatabaseReference foods; 




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

     //firebase 
     database=FirebaseDatabase.getInstance(); 
     foods=database.getReference("Foods"); 


     //int View 
     numberButton=(ElegantNumberButton)findViewById(R.id.number_button); 
     btnCart=(FloatingActionButton)findViewById(R.id.btnCart); 
     food_description=(TextView)findViewById(R.id.food_description2); 
     food_name=(TextView)findViewById(R.id.food_name); 
     food_price=(TextView)findViewById(R.id.food_price); 
     food_image=(ImageView)findViewById(R.id.img_food); 
     collapsingToolbarLayout=(CollapsingToolbarLayout)findViewById(R.id.collapsing); 
     collapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppbar); 
     collapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppbar); 


     //get food id from the intent 
     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); 
       //set image 
       Picasso.with(getBaseContext()).load(food.getImage()).into(food_image); 

       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) { 

      } 
     }); 
    } 
} 

und das ist die Lebensmittelklasse für die Lebensmittelangaben, wo ich die Childs alle aus der Feuerbasis

package com.example.median1.demo; 

/** 
* Created by median1 on 11/5/2017. 
*/ 

public class Food { 
    private String Name,Image,Description,Price,Discount,MenuId; 

    public Food() { 
    } 

    public Food(String name, String image, String description, String price, String discount, String menuId) { 
     Name = name; 
     Image = image; 
     Description = description; 
     Price = price; 
     Discount = discount; 
     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 getDiscount() { 
     return Discount; 
    } 

    public void setDiscount(String discount) { 
     Discount = discount; 
    } 

    public String getMenuId() { 
     return MenuId; 
    } 

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

abrufen und das ist die xml der Lebensmittel Details ich weiß nicht, ob seine wichtige

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.median1.demo.FoodDetail"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     android:fitsSystemWindows="true" 

     > 
     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing" 
      android:layout_width="match_parent" 
      android:layout_height="350dp" 
      android:fitsSystemWindows="true" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      app:contentScrim="#0e0d0e" 
      app:expandedTitleTextAppearance="@android:color/transparent"> 

       <ImageView 
        android:id="@+id/img_food" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:contentDescription="@null" 
        android:scaleType="centerCrop" 
        app:layout_collapseMode="parallax" 


        /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:title="food name" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:layout_collapseMode="parallax" 


       /> 

     </android.support.design.widget.CollapsingToolbarLayout> 


    </android.support.design.widget.AppBarLayout> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/btnCart" 
     android:src="@drawable/ic_shopping_cart_black_24dp" 
     android:backgroundTint="@android:color/white" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:elevation="6dp" 
     app:pressedTranslationZ="12dp" 
     app:layout_anchor="@id/app_bar_layout" 
     app:layout_anchorGravity="bottom|right|end" 
     app:useCompatPadding="true" 

     /> 

    <android.support.v4.widget.NestedScrollView 
     android:id="@+id/nestedScrollView" 
     android:clipToPadding="false" 
     android:layout_width="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      <android.support.v7.widget.CardView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:cardElevation="5dp" 
       app:cardUseCompatPadding="true" 
       > 
       <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 

        <TextView 
         android:id="@+id/food_name" 
         android:layout_marginTop="8dp" 
         android:padding="12dp" 
         android:text="Food name " 
         android:textSize="20sp" 
         android:textStyle="bold" 
         android:textColor="@color/colorPrimary" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" /> 
         <LinearLayout 
          android:id="@+id/layout_price" 
          android:orientation="horizontal" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content"> 
          <ImageView 
           android:src="@drawable/ic_attach_money_black_24dp" 
           android:layout_width="0dp" 
           android:layout_weight="1" 
           android:layout_height="wrap_content" /> 

          <TextView 
           android:id="@+id/food_price" 
           android:text="1,000 " 
           android:textSize="18sp" 
           android:textStyle="bold" 
           android:textColor="@color/colorPrimary" 
           android:layout_width="0dp" 
           android:layout_weight="9" 
           android:layout_height="wrap_content" /> 



         </LinearLayout> 

        <com.cepheuen.elegantnumberbutton.view.ElegantNumberButton 
         android:layout_width="100dp" 
         android:layout_height="30dp" 

         android:id="@+id/number_button" 
         android:layout_marginTop="8dp" 
         android:layout_marginLeft="8dp" 
         android:layout_marginBottom="18dp" 
         app:textSize="8sp" 
         app:backGroundColor="@color/colorAccent" 
         app:initialNumber="1" 
         app:finalNumber="20" 

         /> 

       </LinearLayout> 


      </android.support.v7.widget.CardView> 

      <android.support.v7.widget.CardView 
       app:cardElevation="5dp" 
       app:cardUseCompatPadding="true" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 


      <TextView 
       android:id="@+id/food_description2" 
       android:layout_marginTop="12dp" 
       android:lineSpacingMultiplier="1.5" 
       android:padding="12dp" 
       android:text="description" 
       android:textColor="@android:color/black" 
       android:textSize="14sp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 


      </android.support.v7.widget.CardView> 




     </LinearLayout> 



    </android.support.v4.widget.NestedScrollView> 


</android.support.design.widget.CoordinatorLayout> 

Firebase Datenbank

enter image description here

Antwort

0

Kannst du den Fehler nicht auf logcat sehen oder ausführen? Ich denke, der Fehler ist hier:

//get food id from the intent 
    if(getIntent()!=null) 
     foodId=getIntent().getStringExtra("FoodId"); 

    if(foodId.isEmpty()){ 

     getDetailFood(foodId); 
    } 
} 

oder hier

//get food list intent 
     if(getIntent()!=null){ 

     categoryId=getIntent().getStringExtra("CategoryId"); 
     if(!categoryId.isEmpty()&& categoryId!=null){ 

      loadListFood(categoryId); 
     } 

     } 
} 

vielleicht Lauf überprüfen, wenn Sie klicken und das Problem tritt auf, um zu sehen, wo das Problem ist .. Sie eine leere Zeichenfolge erhalten können

EDITED: Ich machte die gleiche App bekam das gleiche Problem mit dir und auf meinem Lauf sagt das Problem ist hier if(!categoryId.isEmpty()&& categoryId!=null

Verwandte Themen