मैं एंड्रॉइड विकास के लिए नया हूं और मैं एक नेविगेशन ड्रॉवर के साथ एक साधारण ऐप बनाने की कोशिश कर रहा हूं, जिसमें उपयोगकर्ता द्वारा 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 उत्तर
यदि डेटाबेस स्थान 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");
}
}
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।