मैं एंड्रॉइड विकास के लिए नया हूं और मैं एक नेविगेशन ड्रॉवर के साथ एक साधारण ऐप बनाने की कोशिश कर रहा हूं, जिसमें उपयोगकर्ता द्वारा Main() नाम का टुकड़ा खोला जाता है, यह मेरे फायरबेस डेटाबेस में मेरे द्वारा जोड़े गए नाम को प्रदर्शित करेगा।

लेकिन जब से मैंने क्लाउड से डेटा पुनर्प्राप्त करने के लिए कोड जोड़ा है, ऐप क्रैश हो रहा है। कृपया सहायता कीजिए!

नीचे मेरी मुख्य गतिविधि है जिसमें मैंने डिफ़ॉल्ट दृश्य को Fragment 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"/>

कृपया सहायता कीजिए! धन्यवाद!

-1
Harsh Savergaonkar 12 फरवरी 2017, 19:01
क्या आप अपना त्रुटि लॉग पोस्ट कर सकते हैं?
 – 
Linxy
12 फरवरी 2017, 19:11

1 उत्तर

सबसे बढ़िया उत्तर

यदि डेटाबेस स्थान 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");
    }

}
0
Bob Snyder 12 फरवरी 2017, 19:37