android - Why am I getting the message 'Youractivity.java is not an activity subclass or alias' -
i created own android project , cut , pasted code exercise:
when build project no errors or warnings. when run project window error:
annoyingly, can't make window smaller, can't click of buttons. cick 'x' @ top, close it.
here's project structure:
where getting 'autocompletemain' from? (note small c) class named autocompletemain. help.
and have activity included in android manifest, in case you're wondering:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androidexample.autocompleteedittext" android:versioncode="1" android:versionname="1.0" > <uses-permission android:name="android.permission.read_phone_state"></uses-permission> <uses-permission android:name="android.permission.read_contacts" /> <uses-sdk android:minsdkversion="8" android:targetsdkversion="8" /> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="com.example.chris.dialler.autocompletemain" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application>
and here's code of class, autocompletemain.java :
(one thing notice, in class, phonenumber.tostring() , name.tostring() highlighted, saying they're redundant. don't know if that's cause of problem)
package com.example.chris.dialler; import java.util.arraylist; import android.app.activity; import android.content.contentresolver; import android.database.cursor; import android.os.bundle; import android.provider.contactscontract; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.view.inputmethod.inputmethodmanager; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.autocompletetextview; import android.widget.button; import android.widget.edittext; import android.widget.toast; import android.widget.adapterview.onitemclicklistener; import android.widget.adapterview.onitemselectedlistener; import com.androidexample.autocompleteedittext.r; public class autocompletemain extends activity implements onitemclicklistener, onitemselectedlistener { // initialize variables autocompletetextview textview=null; private arrayadapter<string> adapter; // store contacts values in these arraylist public static arraylist<string> phonevaluearr = new arraylist<string>(); public static arraylist<string> namevaluearr = new arraylist<string>(); edittext tonumber=null; string tonumbervalue=""; /** called when activity first created. */ @override public void oncreate(bundle bundle) { super.oncreate(bundle); setcontentview(r.layout.autocomplete_main); final button send = (button) findviewbyid(r.id.send); // initialize autocompletetextview values textview = (autocompletetextview) findviewbyid(r.id.tonumber); //create adapter adapter = new arrayadapter<string> (this, android.r.layout.simple_dropdown_item_1line, new arraylist<string>()); textview.setthreshold(1); //set adapter autocompletetextview textview.setadapter(adapter); textview.setonitemselectedlistener(this); textview.setonitemclicklistener(this); // read contact data , add data arrayadapter // arrayadapter used autocompletetextview readcontactdata(); /********** button click pass textview object ***********/ send.setonclicklistener(btnaction(textview)); } private onclicklistener btnaction(final autocompletetextview tonumber) { return new onclicklistener() { public void onclick(view v) { string namesel = ""; namesel = tonumber.gettext().tostring(); final string tonumber = tonumbervalue; if (tonumber.length() == 0 ) { toast.maketext(getbasecontext(), "please fill phone number", toast.length_short).show(); } else { toast.maketext(getbasecontext(), namesel+" : "+tonumbervalue, toast.length_long).show(); } } }; } // read phone contact name , phone numbers private void readcontactdata() { try { /*********** reading contacts name , number **********/ string phonenumber = ""; contentresolver cr = getbasecontext() .getcontentresolver(); //query contact name cursor cur = cr .query(contactscontract.contacts.content_uri, null, null, null, null); // if data data found in contacts if (cur.getcount() > 0) { log.i("autocompletecontacts", "reading contacts........"); int k=0; string name = ""; while (cur.movetonext()) { string id = cur .getstring(cur .getcolumnindex(contactscontract.contacts._id)); name = cur .getstring(cur .getcolumnindex(contactscontract.contacts.display_name)); //check contact have phone number if (integer .parseint(cur .getstring(cur .getcolumnindex(contactscontract.contacts.has_phone_number))) > 0) { //create query phone number contact id cursor pcur = cr .query(contactscontract.commondatakinds.phone.content_uri, null, contactscontract.commondatakinds.phone.contact_id + " = ?", new string[] { id }, null); int j=0; while (pcur .movetonext()) { // multiple data if(j==0) { // phone number phonenumber =""+pcur.getstring(pcur .getcolumnindex(contactscontract.commondatakinds.phone.number)); // add contacts names adapter adapter.add(name); // add arraylist names adapter phonevaluearr.add(phonenumber.tostring()); namevaluearr.add(name.tostring()); j++; k++; } } // end while loop pcur.close(); } // end if } // end while loop } // end cursor value check cur.close(); } catch (exception e) { log.i("autocompletecontacts","exception : "+ e); } } @override public void onitemselected(adapterview<?> arg0, view arg1, int position, long arg3) { // todo auto-generated method stub //log.d("autocompletecontacts", "onitemselected() position " + position); } @override public void onnothingselected(adapterview<?> arg0) { // todo auto-generated method stub inputmethodmanager imm = (inputmethodmanager) getsystemservice( input_method_service); imm.hidesoftinputfromwindow(getcurrentfocus().getwindowtoken(), 0); } @override public void onitemclick(adapterview<?> arg0, view arg1, int arg2, long arg3) { // todo auto-generated method stub // array index value selected name int = namevaluearr.indexof(""+arg0.getitematposition(arg2)); // if name exist in name arraylist if (i >= 0) { // phone number tonumbervalue = phonevaluearr.get(i); inputmethodmanager imm = (inputmethodmanager) getsystemservice( input_method_service); imm.hidesoftinputfromwindow(getcurrentfocus().getwindowtoken(), 0); // show alert toast.maketext(getbasecontext(), "position:"+arg2+" name:"+arg0.getitematposition(arg2)+" number:"+tonumbervalue, toast.length_long).show(); log.d("autocompletecontacts", "position:"+arg2+" name:"+arg0.getitematposition(arg2)+" number:"+tonumbervalue); } } protected void onresume() { super.onresume(); } protected void ondestroy() { super.ondestroy(); } }
phonenumber , name strings there is, , unnecessary, try , convert them strings. in regards main question, have had annoying problems in past , either try syncing gradle or rebooting android studio.
Comments
Post a Comment