एंड्रॉइड डेटाबेस अनुप्रयोग प्रतिक्रिया नहीं दे रहा है

मैं डेटाबेस में टेक्स्टफील्ड मानों को स्टोर करने के लिए एक आवेदन कर रहा हूं। जब मैं इसे सबमिट करने के लिए बटन दबाता हूं तो मान दर्ज करने के बाद, यह सिर्फ फांसी दी जाती है और कोई प्रतिक्रिया नहीं देती है।

मेरा ऑनक्रेट कोड नीचे दिया गया है:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final DBAdapter db = new DBAdapter(this);

      //---add 2 titles---
        db.open();
        final long d_id ;  
        final EditText input1 = (EditText) findViewById(R.id.isbn);
        final String   isbn   = input1.getText().toString();

        final EditText input2 = (EditText) findViewById(R.id.titleText);
        final String   tText   = input2.getText().toString();

        final EditText input3 = (EditText) findViewById(R.id.publisherText);
        final String   pText   = input3.getText().toString();

        this.btn = (Button)this.findViewById(R.id.button1);
        this.btn.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) {
                db.insertTitle(isbn, tText, pText);

            }
        });

         db.close();
    }

}

आईएसबीएन, टाइटलटेक्स्ट और प्रकाशक टेक्स्ट टेक्स्टफील्ड के लिए मेरी आईडी हैं। insertTitle मान डालने के लिए फ़ंक्शन है।

मेरे कोड के साथ क्या गलत है?

धन्यवाद।

0
db.open और db.close को ऑनक्लिक के अंदर रखें (insertTitle से पहले और बाद में)।
जोड़ा लेखक Urban, स्रोत

3 उत्तर

इसे इस्तेमाल करे

    this.btn = (Button)this.findViewById(R.id.button1);
    this.btn.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
final EditText input1 = (EditText) findViewById(R.id.isbn);
    final String   isbn   = input1.getText().toString();

    final EditText input2 = (EditText) findViewById(R.id.titleText);
    final String   tText   = input2.getText().toString();

    final EditText input3 = (EditText) findViewById(R.id.publisherText);
    final String   pText   = input3.getText().toString();

            db.insertTitle(isbn, tText, pText);

        }
    });
0
जोड़ा

आप अपने टेक्स्ट फ़ील्ड के मान पढ़ रहे हैं क्योंकि ऐप बनाया जा रहा है, बटन दबाए जाने पर नहीं। आप अपने वर्तमान कोड के साथ अपने संपादन टेक्स्ट के प्रारंभिक मान हमेशा दर्ज करेंगे। इसे इस्तेमाल करे:

db.insertTitle(input1.getText().toString(), input2.getText().toString(), input3.getText().toString());

आपको अपना डेटाबेस बंद करने के लिए स्थानांतरित करना होगा, अन्यथा आपको बंद डेटाबेस तक पहुंचने का प्रयास करने में त्रुटि मिलेगी। इसे रोकें() या ऑनस्ट्रोय() पर डालने का प्रयास करें।

यदि यह समाधान नहीं है तो कृपया अपनी लॉगबैक त्रुटियां पोस्ट करें इसलिए हमें यह अनुमान लगाने की ज़रूरत नहीं है कि क्या हो रहा है।

0
जोड़ा
धन्यवाद यह काम किया! :)
जोड़ा लेखक user1370786, स्रोत

मुझे लगता है कि आपकी समस्या open() और close() है, वे ऑनक्लिक विधि में हैं या आपके insertTitle() विधि। अपने मूल्यों और प्रकारों की जांच करें।

    ContentValues cv = new ContentValues();
    cv.put(KEY_WORK_OUT, workout);
    cv.put(KEY_NAME, name);
    cv.put(KEY_REP,rep);
    cv.put(KEY_WEIGHT, weight);

    ourDataBase.insert(DATABASE_TABLE, null, cv);
0
जोड़ा