CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

cursorLoader incompatibilita' v4

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    May 2014
    Messaggi
    48

    Ringraziamenti
    9
    Ringraziato 0 volte in 0 Posts
    Predefinito

    cursorLoader incompatibilita' v4

    EDIT: Funziona
    Nella main class invece di getSupportFragmentManager,ho usato getFragmentManager
    poi ho cambiato
    initLoader(0, null, this) a intLoader(0,null, (LoaderCallbacks<Cursor>) this


    Ciao non riesco ad usare initLoader il problema principale e' che non accetta come terzo parametro this
    se non levando gli imports e mettendo le librerie support v4, ma a quel punto non posso piu' ritornare un cursore, e mi fa implementare nuovi metodi l'interfaccia che in OnLoaderStart non mi fanno ritornare un CursorLoader, cosi faccio a meno dei v4 imports, ma ottengo un errore che non riesco a spiegarmi nella main class, cercando in giro ho trovato che gli import potrebbero essere sbagliati, ma sono giorni che provo senza successo.
    Uso android studio intellij e la minsdk e' 11
    grazie
    Error21, 21) error: no suitable method found for add(int,FragmentAsList)
    method FragmentTransaction.add(int,Fragment,String) is not applicable
    (actual and formal argument lists differ in length)
    method FragmentTransaction.add(int,Fragment) is not applicable
    (actual argument FragmentAsList cannot be converted to Fragment by method invocation conversion)
    method FragmentTransaction.add(Fragment,String) is not applicable
    (actual argument int cannot be converted to Fragment by method invocation conversion)

    codice:
    import android.app.LoaderManager;
    import android.content.ContentValues;
    import android.content.CursorLoader;
    import android.content.Intent;
    import android.content.Loader;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.widget.SimpleCursorAdapter;
    import android.text.format.Time;
    import android.util.Log;
    import android.view.ContextMenu;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.Toast;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import ivano.android.com.ucanote.ivano.android.com.ucanote.db.Db;
    import ivano.android.com.ucanote.ivano.android.com.ucanote.db.UcanContentProvider;
    import ivano.android.com.ucanote.ivano.android.com.ucanote.db.UcanContract;
     
     
     
     
     
    public class FragmentAsList extends Fragment implements  View.OnCreateContextMenuListener,LoaderManager.LoaderCallbacks<Cursor> {
        private SimpleCursorAdapter myCursorAdapter;
     
        //brought out from OnCreateView, have to be in all the class
        List<String> tasks = new ArrayList<String>();
     
        ListView listView;
     
        Time today = new Time(Time.getCurrentTimezone());
        Db myDb;
        EditText etTasks;
     
     
        public FragmentAsList() {
            super();
        }
     
     
        public void populateView() {
     
    //TODO FIRSTclean the class and see if you have to get rid of the query in populate view()
            getLoaderManager().initLoader(0, null, this);
     
     
     
     //   String[] projection ={UcanContract.Tasks._ID,UcanContract.Tasks.COLUMN_TASKS};
    //Cursor cursor=getActivity().getContentResolver().query(UcanContentProvider.CONTENT_URI,projection,null,null,null);
        String[] fromFieldNames = new String[]{UcanContract.Tasks._ID,UcanContract.Tasks.COLUMN_TASKS};
        int[] toViewId = new int[]{R.id.text_v1,R.id.text_v2};
     
        myCursorAdapter=new SimpleCursorAdapter(getActivity(),R.layout.textview_pretty_cool2_layout,null,fromFieldNames,toViewId,0);
        listView.setAdapter(myCursorAdapter);
     
     
        }
     
         @Override
        public void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
    // Add this line in order for this fragment to handle menu events.
            setHasOptionsMenu(true);
     
     
     
    //open Database
     
            myDb = new Db(getActivity());
            myDb.open();
     
     
        }
     
     
         @Override
        public String toString() {
            return super.toString();
        }
     
         @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            inflater.inflate(R.menu.menu_fragmentaslist, menu);
     
        }
     
         @Override
        public boolean onOptionsItemSelected(MenuItem item) {
     
    //        // Handle action bar item clicks here. The action bar will
    //        // automatically handle clicks on the Home/Up button, so long
    //        // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
     
            switch (id) {
                case R.id.add:
     
                    Intent intent_comunicate = new Intent(getActivity(), DetailNote.class);
     
                    intent_comunicate.putExtra(getActivity().getPackageName(), "CIao Cipollino");
                    startActivityForResult(intent_comunicate, 123);
     
                    break;
     
                case R.id.delete_all:
                    registerForContextMenu(listView);
                    getActivity().getContentResolver().delete(UcanContentProvider.CONTENT_URI, null, null);
     
                                 populateView();
     
            }
            return super.onOptionsItemSelected(item);
     
        }
     
         @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == 123) {
                String string = data.getExtras().getString(getActivity().getPackageName());
                Log.d("FragmentAsList", "stringa dall altra activity: " + string);
                Toast.makeText(getActivity(), string, Toast.LENGTH_LONG).show();
     
                today.setToNow();
                String timeCurrent = today.format("%Y-%m-%d %H:%M:%S");
     
     
                registerForContextMenu(listView);
     
     
     
                ContentValues values = new ContentValues();
                values.put(UcanContract.Tasks.COLUMN_TASKS, string);
     
                getActivity().getContentResolver().insert(UcanContentProvider.BASE_CONTENT_URI, values);
     
     
                // myDb.insertRow(string, timeCurrent, null, null);
                //database query
                populateView();
     
     
            }
        }
     
         @Override
        public View onCreateView(LayoutInflater inflater,  @nullable ViewGroup container,  @nullable Bundle savedInstanceState) {
     
     
            View hiddenList = inflater.inflate(R.layout.fragment_as_list_layout, container, false);
     
            listView = (ListView) hiddenList.findViewById(R.id.list_hidden);
     
     
     
            registerForContextMenu(listView);
     
    populateView();
    /
            listView.setAdapter(myCursorAdapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Log.d("ivano.android.com.ucanote.FragmentAsList", "onItemClick (line 115): tocca posizione: " + position);
               }
     
            });
     
     
            return hiddenList;
     
        }
     
         @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
     
            super.onCreateContextMenu(menu, v, menuInfo);
     
            MenuInflater mi = getActivity().getMenuInflater();
     
     
            mi.inflate(R.menu.context_menu, menu);
        }
     
         @Override
        public boolean onContextItemSelected(MenuItem item) {
     
            registerForContextMenu(listView);
            AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
            int index = info.position;
     
            Uri uri = Uri.parse(UcanContentProvider.CONTENT_URI + "/"
                    + info.id);
            String where = String.valueOf(info.id);
     
            switch (item.getItemId()) {
                case R.id.delete:
     
                    getActivity().getContentResolver().delete(uri, where, null);
                    populateView();
                    break;
     
     
     
                case R.id.edit:
     
                    break;
                case R.id.share:
                    break;
     
            }
     
            return super.onContextItemSelected(item);
        }
     
         @Override
        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
            String[] projection ={UcanContract.Tasks._ID,UcanContract.Tasks.COLUMN_TASKS};
     
            CursorLoader cl = new CursorLoader(getActivity(), UcanContentProvider.CONTENT_URI, projection, null, null, null);
            return cl;
        }
     
         @Override
        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    myCursorAdapter.swapCursor(data);
        }
     
         @Override
        public void onLoaderReset(Loader<Cursor> loader) {
    myCursorAdapter.swapCursor(null);
        }
    e la main class

    codice:
     
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.Menu;
    import android.view.MenuItem;
     
    public class MainActivity extends ActionBarActivity {
     
     
     
     
         @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main_layout);
     
     
            if (savedInstanceState == null) {
                getSupportFragmentManager().beginTransaction()
                        .add(R.id.framebig, new FragmentAsList())
                        .commit();
     
            }
     
        }//end on Create
     
                 @Override
                public boolean onCreateOptionsMenu (Menu menu){
                    // Inflate the menu; this adds items to the action bar if it is present.
                    getMenuInflater().inflate(R.menu.menu_main, menu);
                    return true;
                }
     
                 @Override
                public boolean onOptionsItemSelected (MenuItem item){
                    // Handle action bar item clicks here. The action bar will
                    // automatically handle clicks on the Home/Up button, so long
                    // as you specify a parent activity in AndroidManifest.xml.
                    int id = item.getItemId();
     
                    //noinspection SimplifiableIfStatement
                    if (id == R.id.action_settings) {
                        return true;
                    }
     
                    return super.onOptionsItemSelected(item);
                }
     
     
     
        }
    Ultima modifica di ndrokki; 27-04-15 alle 14:37

  2.  
  3. #2
    Baby Droid


    Registrato dal
    May 2014
    Messaggi
    48

    Ringraziamenti
    9
    Ringraziato 0 volte in 0 Posts
    Predefinito

    RiSOLTO
    gli import alcuni erano per le librerie retrocompatibili V4 altre per quelle normali
    per cui invece che usare getSupportFragmentManager ho utilizzato getFragmentManager, cancellando tutti gli importi ed aggiustandoli uno per uno

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy