2012-07-14 15 views
31

से एक डेटाबेस में डाला एक नया रिकार्ड की आईडी प्राप्त करें वहाँ किसी भी तरह से uri कि लौटा दिया जाता है से आईडी प्राप्त करने के लिए है तो मुझे आईडी प्राप्त करने के लिए पहले से ही लौटे यूरी में एक प्रश्न चलाने की ज़रूरत नहीं है?लौटे उरी

उत्तर

63

ContentUris.parseId() अंतिम पथ खंड को लंबे समय तक परिवर्तित करता है।

+5

ContentUris.parseId() "आधिकारिक" कैसे रिकॉर्ड आईडी पुनः प्राप्त करने पर गूगल जवाब है, के अंत में देखें [सम्मिलित करना डेटा] (http://developer.android.com/guide/topics/providers/ सामग्री-प्रदाता-मूलभूत.html # सम्मिलित करना) अनुभाग। आप स्ट्रिंग मान प्राप्त करने के लिए uri.getLastPathSegment() का भी उपयोग कर सकते हैं, लेकिन आपको Integer.valueOf (stringId) के बजाय Long.valueOf (stringId) का उपयोग करने की आवश्यकता है क्योंकि डेटाबेस आईडी के लंबे मान हैं। – Y2i

11
long id = Long.valueOf(uri.getLastPathSegment()); 
+0

uri.getPathSegments() प्राप्त करता है (1) भी मिलता है (0) एक ही –

+0

आईडी देता है 'लंबा' – weston

0

ContentUris.parseId उपयोग (URI) यह बयान एक लंबे करने के लिए पिछले पथ सेगमेंट में कनवर्ट करता होगा। here

0
long rowId = Long.valueOf(uri.getLastPathSegment()); 
ऊपर

में

पढ़ें प्रलेखन सही है। लेकिन मैंने जो किया है, मैंने घटनाओं जैसे यूरी को पारित किया .CONTENT_URI.getLastPathSegment() जो आईडी नहीं देता है। क्योंकि हमें यूआरआई पास करना है जो नीचे डालने() जैसे वापस आ गया है। मेरे जैसे किसी के लिए सहायक हो सकता है!

Uri uri = getContentResolver().insert(Events.CONTENT_URI, values); 
long rowId = Long.valueOf(uri.getLastPathSegment()); 
संबंधित मुद्दे