2017-02-12 18 views
-1

增加了检索功能我是新Android开发,我试图与抽屉式导航,其中当命名为Main()片段是由它会显示用户打开一个简单的应用程序我在Firebase数据库中添加的名称。应用轰然因为从我的火力地堡数据库

但自从我加入了代码从云检索数据,应用程序崩溃。请帮忙!

下面是我的主要活动中,我设定的默认视图片段Main(其中的方式试图恢复数据之前的工作)。

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

NavigationView navigationView = null; 
Toolbar toolbar = null; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    Main fragment = new Main(); 
    android.support.v4.app.FragmentTransaction fragmentTransaction = 
      getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.fragment_container, fragment); 
    fragmentTransaction.commit(); 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

下面是我的'主'片段中检索数据的代码。

public class Main extends Fragment { 

private DatabaseReference mdatabase; 
TextView show; 


public Main() { 
    // Required empty public constructor 
    //show = (ImageView) findViewById(R.id.show); 


} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 

    View v = inflater.inflate(R.layout.fragment_main, container, false); 
    show = (TextView) v.findViewById(R.id.show); 
    mdatabase = FirebaseDatabase.getInstance().getReference().child("Name"); 
    mdatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      String ret = dataSnapshot.getValue().toString(); 
      show.setText("Name: " + ret); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      show.setText("Name:"); 
     } 
    }); 


    return v; 
} 

} 

和碎片的.XML以下

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.technobotik.www.learnac.Main"> 

<!-- TODO: Update blank fragment layout --> 


<TextView 
    android:text="Name:" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/show" 
    android:textSize="20dp"/> 

请帮助! 谢谢!

+0

您可以发布错误日志 – Linxy

回答

0

如果数据库位置Name不包含任何值,则由侦听器返回的DataSnapshot对于getValue()返回空值。在应用toString()结果之前,您需要检查是否存在值:

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    if (dataSnapshot.exists()) { 
     String ret = dataSnapshot.getValue().toString(); 
     show.setText("Name: " + ret); 
    } else { 
     show.setText("Name: NULL"); 
    } 

}