سؤال

ولدي tabactivity مع اثنين من علامات التبويب.

وفي هذا tabactivity لدي EDITTEXT وزر للبحث في قاعدة البيانات المحلية.

ولدي فئة listactivity باعتباره tabcontent. هذا يظهر من قبل framelayout.

وأريد أن تحديث هذا listactivity على أساس النص الذي تم إدخاله في EDITTEXT الذي هو في tabactivity.

وكيف نفعل ذلك؟

وأنا خلقت أسلوب في listactivity:

public void search(String temp) {
String val=temp;
try{
c=BruTube_Videos.this.getContentResolver().query(Constants.CONTENT_URI, null, Constants.TITLE+" like '%"+val+"%'", null, "DATETIME("+Constants.PUBLISHED+") DESC");
}catch(Exception e){
Log.v(TAG, "exp in cursor");
}
show(c);
}

واستدعاء وهذه الطريقة في tabactivity مثل هذا:

EditText et1=(EditText) findViewById(R.id.EditText01);
String temp=et1.getText().toString();
BruTube_Videos vdo_obj=new BruTube_Videos();
vdo_obj.search(temp);

ولكنه يظهر استثناء في logcat:

و12/02 16: 58: 26.623: VERBOSE / BruTube_Videos (227): استثناء بحثا brutube: java.lang.IllegalStateException: خدمات النظام غير متوفرة لأنشطة قبل OnCreate الخاص ()

وكيف يمكنني التعامل معه؟

وذلك بفضل.

هل كانت مفيدة؟

المحلول

BruTube_Videos vdo_obj=new BruTube_Videos();

وأبدا استدعاء المنشئ على Activity. أنت لا خلق أنشطة - كنت اقول الروبوت لبدء لهم. وهذا هو مصدر الخطأ الخاص بك.

وأنا ننصحك بشدة للتخلص من أنشطة تماما، ولها عقد TabActivity واحد على Views - واحد هو أن تخطيط لشكل تحرير الخاص بك، واحد هو أن ListView الخاص بك. ثم، أنك لن تحصل على الخلط وإلى أين يذهب رمز، لأنه ليس هناك نشاط واحد فقط. وهذا هو أيضا أكثر فعالية من البرمجة، والذاكرة، وحدة المعالجة المركزية، وجهة نظر استخدام البطارية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top