Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.65
alexvinn
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 59
#1

GetSupportLoaderManager и импорт support библиотек - Программирование Android

28.04.2014, 15:51. Просмотров 2841. Ответов 12
Метки нет (Все метки)

Помогите разобраться, плз.
Что-то с импортом библиотек, но что именно понять не могу.
Все библиотеки, которые спрашивает на выбор - выбираю с "support"
Хелп, плз.

Строка 92 - getSupportLoaderManager() - подчеркивает красным,
пишет - Cannot make a static reference to the non-static method getSupportLoaderManager() from the type FragmentActivity

Делаю урок отсюда - http://startandroid.ru/ru/uroki/vse-...sorloader.html

Проект создаю:
Min SDK - 11
Target SDK - 11
Compile With - 19

MainActivity.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package com.example.p0521_simplecursoradapter;
 
import java.util.concurrent.TimeUnit;
 
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.ActionBarActivity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
 
 
 
public class MainActivity extends ActionBarActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.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();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
 
        public PlaceholderFragment() {
        }
        
        private static final int CM_DELETE_ID = 1;
        ListView lvData;
        DB db;
        SimpleCursorAdapter scAdapter;
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
            
            // открываем подключение к БД
            db = new DB(getActivity());
            db.open();
            
            // формируем столбцы сопоставления
            String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
            int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
            // создааем адаптер и настраиваем список
            scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item, null, from, to, 0);
            lvData = (ListView) rootView.findViewById(R.id.lvData);
            lvData.setAdapter(scAdapter);
 
            // добавляем контекстное меню к списку
            registerForContextMenu(lvData);
            
            // создаем лоадер для чтения данных
            getSupportLoaderManager().initLoader(0, null, getActivity());
            
            return rootView;
        }
        
        // обработка нажатия кнопки
        public void onButtonClick(View view) {
            // добавляем запись
            db.addRec("sometext " + (scAdapter.getCount() + 1), R.drawable.ic_launcher);
            // получаем новый курсор с данными
             getSupportLoaderManager().getLoader(0).forceLoad();
        }
          
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
        }
 
        public boolean onContextItemSelected(MenuItem item) {
            if (item.getItemId() == CM_DELETE_ID) {
                // получаем из пункта контекстного меню данные по пункту списка
                android.widget.AdapterView.AdapterContextMenuInfo acmi = (android.widget.AdapterView.AdapterContextMenuInfo) item
                        .getMenuInfo();
                // извлекаем id записи и удаляем соответствующую запись в БД
                db.delRec(acmi.id);
                // получаем новый курсор с данными
                getSupportLoaderManager().getLoader(0).forceLoad();
                return true;
            }
            return super.onContextItemSelected(item);
        }
 
        public void onDestroy() {
            super.onDestroy();
            // закрываем подключение при выходе
            db.close();
        }
 
        public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
            return new MyCursorLoader(getActivity(), db);
        }
 
        public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
            scAdapter.swapCursor(cursor);
        }
 
        public void onLoaderReset(Loader<Cursor> loader) {
        }
          
        static class MyCursorLoader extends CursorLoader {
 
            DB db;
            
            public MyCursorLoader(Context context, DB db) {
                super(context);
                this.db = db;
            }
            
            @Override
            public Cursor loadInBackground() {
                Cursor cursor = db.getAllData();
                try {
                    TimeUnit.SECONDS.sleep(3);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return cursor;
            }
        }
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2014, 15:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос GetSupportLoaderManager и импорт support библиотек (Программирование Android):

Android.support.v7 - Программирование Android
Народ, помогите пожалуйста. Интелиж не видит android.support.v7.app.ActionBarActivity хотя в android sdk manager support скачан, в...

ShareActionProvider support library - Программирование Android
Возникла необходимость в ShareActionProvider на апи ниже 14. Скачал и поставил либу поддержки, как сказано в мануале ...

Desing Support на eclipce - Программирование Android
Здравствуйте. Нужна помощь, не получается залить Android Design Support Library в эклипс. По советам из поиска добавляю как проект, ставлю...

Android-support-v7 ошибка - Программирование Android
Добрый вечер, устанавливал google maps API для проекта. и случайно видимо обновился support вечером все работало нормально, после...

Подключение темы из Support Library - Программирование Android
Здравствуйте! Решил переделать дизайн своего приложение под material. С трудом подключил библиотеку(через project structure). После...

Идеология com.android.support:appcompat - Программирование Android
Немного не ясно назначение данной библиотеки. Насколько я понимаю, она нужна, чтобы новые прикольные графические фичи работали на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Netscape
372 / 359 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.04.2014, 16:00 #2
Java
1
getActivity().getSupportLoaderManager()...
0
alexvinn
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 59
28.04.2014, 16:09  [ТС] #3
Спасибо, теперь в строке
getActivity().getSupportLoaderManager().initLoader(0, null, getActivity());

подчёркивает initLoader, пишет -

The method initLoader(int, Bundle, LoaderManager.LoaderCallbacks<D>) in the type LoaderManager is not applicable for the arguments (int, null, FragmentActivity)

Хелп, плз.
0
Netscape
372 / 359 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.04.2014, 16:11 #4
Java
1
public static class PlaceholderFragment extends Fragment implement LoaderManager.LoaderCallbacks<D>
Java
1
getActivity().getSupportLoaderManager().initLoader(0, null, this);
0
alexvinn
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 59
28.04.2014, 16:33  [ТС] #5
Строка 33 -
getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();

-- Cannot instantiate the type MainActivity.PlaceholderFragment


Строка 140 -
public void onLoaderReset(Loader<Cursor> loader) {

-- Name clash: The method onLoaderReset(Loader<Cursor>) of type MainActivity.PlaceholderFragment has the same erasure as onLoaderReset(Loader) of type LoaderManager.LoaderCallbacks but does not override it

Хелп, плз.






Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package com.example.p0521_simplecursoradapter;
 
import java.util.concurrent.TimeUnit;
 
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.ActionBarActivity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
 
 
 
public class MainActivity extends ActionBarActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.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();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    /**
     * A placeholder fragment containing a simple view.
     */
    public static abstract class PlaceholderFragment extends Fragment implements LoaderManager.LoaderCallbacks<DB>{
 
        public PlaceholderFragment() {
        }
        
        private static final int CM_DELETE_ID = 1;
        ListView lvData;
        DB db;
        SimpleCursorAdapter scAdapter;
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
            
            // открываем подключение к БД
            db = new DB(getActivity());
            db.open();
            
            // формируем столбцы сопоставления
            String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
            int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
            // создааем адаптер и настраиваем список
            scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item, null, from, to, 0);
            lvData = (ListView) rootView.findViewById(R.id.lvData);
            lvData.setAdapter(scAdapter);
 
            // добавляем контекстное меню к списку
            registerForContextMenu(lvData);
            
            // создаем лоадер для чтения данных
            getActivity().getSupportLoaderManager().initLoader(0, null, this);
            
            return rootView;
        }
        
        // обработка нажатия кнопки
        public void onButtonClick(View view) {
            // добавляем запись
            db.addRec("sometext " + (scAdapter.getCount() + 1), R.drawable.ic_launcher);
            // получаем новый курсор с данными
            getActivity().getSupportLoaderManager().getLoader(0).forceLoad();
        }
          
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
        }
 
        public boolean onContextItemSelected(MenuItem item) {
            if (item.getItemId() == CM_DELETE_ID) {
                // получаем из пункта контекстного меню данные по пункту списка
                android.widget.AdapterView.AdapterContextMenuInfo acmi = (android.widget.AdapterView.AdapterContextMenuInfo) item
                        .getMenuInfo();
                // извлекаем id записи и удаляем соответствующую запись в БД
                db.delRec(acmi.id);
                // получаем новый курсор с данными
                getActivity().getSupportLoaderManager().getLoader(0).forceLoad();
                return true;
            }
            return super.onContextItemSelected(item);
        }
 
        public void onDestroy() {
            super.onDestroy();
            // закрываем подключение при выходе
            db.close();
        }
 
        public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
            return new MyCursorLoader(getActivity(), db);
        }
 
        public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
            scAdapter.swapCursor(cursor);
        }
 
        public void onLoaderReset(Loader<Cursor> loader) {
        }
          
        static class MyCursorLoader extends CursorLoader {
 
            DB db;
            
            public MyCursorLoader(Context context, DB db) {
                super(context);
                this.db = db;
            }
            
            @Override
            public Cursor loadInBackground() {
                Cursor cursor = db.getAllData();
                try {
                    TimeUnit.SECONDS.sleep(3);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return cursor;
            }
        }
 
        @Override
        public void onLoadFinished(Loader arg0, Object arg1) {
            // TODO Auto-generated method stub
            
        }
    }
}

DB class
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package com.example.p0521_simplecursoradapter;
 
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
 
public class DB {
  
  private static final String DB_NAME = "mydb";
  private static final int DB_VERSION = 1;
  private static final String DB_TABLE = "mytab";
  
  public static final String COLUMN_ID = "_id";
  public static final String COLUMN_IMG = "img";
  public static final String COLUMN_TXT = "txt";
  
  private static final String DB_CREATE = 
    "create table " + DB_TABLE + "(" +
      COLUMN_ID + " integer primary key autoincrement, " +
      COLUMN_IMG + " integer, " +
      COLUMN_TXT + " text" +
    ");";
  
  private final Context mCtx;
  
  
  private DBHelper mDBHelper;
  private SQLiteDatabase mDB;
  
  public DB(Context ctx) {
    mCtx = ctx;
  }
  
  // открыть подключение
  public void open() {
    mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
    mDB = mDBHelper.getWritableDatabase();
  }
  
  // закрыть подключение
  public void close() {
    if (mDBHelper!=null) mDBHelper.close();
  }
  
  // получить все данные из таблицы DB_TABLE
  public Cursor getAllData() {
    return mDB.query(DB_TABLE, null, null, null, null, null, null);
  }
  
  // добавить запись в DB_TABLE
  public void addRec(String txt, int img) {
    ContentValues cv = new ContentValues();
    cv.put(COLUMN_TXT, txt);
    cv.put(COLUMN_IMG, img);
    mDB.insert(DB_TABLE, null, cv);
  }
  
  // удалить запись из DB_TABLE
  public void delRec(long id) {
    mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null);
  }
  
  // класс по созданию и управлению БД
  private class DBHelper extends SQLiteOpenHelper {
 
    public DBHelper(Context context, String name, CursorFactory factory,
        int version) {
      super(context, name, factory, version);
    }
 
    // создаем и заполняем БД
    @Override
    public void onCreate(SQLiteDatabase db) {
      db.execSQL(DB_CREATE);
      
      ContentValues cv = new ContentValues();
      for (int i = 1; i < 5; i++) {
        cv.put(COLUMN_TXT, "sometext " + i);
        cv.put(COLUMN_IMG, R.drawable.ic_launcher);
        db.insert(DB_TABLE, null, cv);
      }
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
  }
}
0
Netscape
372 / 359 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.04.2014, 17:17 #6
Я так понял, лучше дать ссылку рабочий на пример, ибо вижу, вы не ведаете что творите:
http://tausiq.wordpress.com/2012/12/...gmentactivity/
0
alexvinn
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 59
28.04.2014, 18:59  [ТС] #7
Да, согласен... там накрутил черти-знает что....
Вот уже скомпилировалось приложение.
Но, при запуске слетает.
Хелп, плз.

Лог:
04-28 10:31:08.110: E/AndroidRuntime(996): Caused by: java.lang.ClassCastException: com.example.p0521_simplecursoradapter.MainActivity cannot be cast to android.app.LoaderManager$LoaderCallbacks
04-28 10:31:08.110: E/AndroidRuntime(996): at com.example.p0521_simplecursoradapter.MainActivity$PlaceholderFragment.onCreateView(MainActivity.java:98)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package com.example.p0521_simplecursoradapter;
 
import java.util.concurrent.TimeUnit;
 
import android.support.v4.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
 
 
 
 
 
public class MainActivity extends ActionBarActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.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();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment implements LoaderCallbacks<Cursor>{
 
        public PlaceholderFragment() {
        }
        
        private static final int CM_DELETE_ID = 1;
        ListView lvData;
        DB db;
        SimpleCursorAdapter scAdapter;
 
        @SuppressWarnings("unchecked")
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
        
            // открываем подключение к БД
            db = new DB(getActivity());
            db.open();
            
            // формируем столбцы сопоставления
            String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
            int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
            // создааем адаптер и настраиваем список
            scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item, null, from, to, 0);
            lvData = (ListView) rootView.findViewById(R.id.lvData);
            lvData.setAdapter(scAdapter);
 
            // добавляем контекстное меню к списку
            registerForContextMenu(lvData);
            
            // создаем лоадер для чтения данных
            getActivity().getLoaderManager().initLoader(0, null, (LoaderCallbacks<DB>) getActivity());
            
            return rootView;
        } // конец OnCreate
        
        
          // обработка нажатия кнопки
          public void onButtonClick(View view) {
            // добавляем запись
            db.addRec("sometext " + (scAdapter.getCount() + 1), R.drawable.ic_launcher);
            // получаем новый курсор с данными
            getActivity().getLoaderManager().getLoader(0).forceLoad();
          }
          
          public void onCreateContextMenu(ContextMenu menu, View v,
              ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
          }
 
          public boolean onContextItemSelected(MenuItem item) {
            if (item.getItemId() == CM_DELETE_ID) {
              // получаем из пункта контекстного меню данные по пункту списка
              AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                  .getMenuInfo();
              // извлекаем id записи и удаляем соответствующую запись в БД
              db.delRec(acmi.id);
              // получаем новый курсор с данными
              getActivity().getLoaderManager().getLoader(0).forceLoad();
              return true;
            }
            return super.onContextItemSelected(item);
          }
          
          public void onDestroy() {
                super.onDestroy();
                // закрываем подключение при выходе
                db.close();
              }
 
          @Override
          public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
            return new MyCursorLoader(getActivity(), db);
          }
 
          @Override
          public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
            scAdapter.swapCursor(cursor);
          }
 
          @Override
          public void onLoaderReset(Loader<Cursor> loader) {
          }
          
          
          static class MyCursorLoader extends CursorLoader {
 
                DB db;
                
                public MyCursorLoader(Context context, DB db) {
                  super(context);
                  this.db = db;
                }
                
                @Override
                public Cursor loadInBackground() {
                    Cursor cursor = db.getAllData();
                    try {
                        TimeUnit.SECONDS.sleep(3);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    return cursor;
                }
          }
    }
}
0
Netscape
372 / 359 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.04.2014, 19:20 #8
как-то так:
Java
1
2
// создаем лоадер для чтения данных
getActivity().getLoaderManager().initLoader(0, null, this);
0
alexvinn
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 59
28.04.2014, 19:24  [ТС] #9
Говорят, что с импортами что-то не то... Но, что именно, я не могу понять.
0
dan41k
]:->
98 / 92 / 13
Регистрация: 12.11.2013
Сообщений: 398
29.04.2014, 10:47 #10
ошибку, скриншот. Хоть что-нибудь) Может быть вы раньше импортировали класса из библиотеки, которая было подключена, а теперь ее удалили...
0
alexvinn
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 59
29.04.2014, 11:23  [ТС] #11
Всем спасибо. Решилось. Я разные либы использовал (суппорт и обычные).
0
niklas1987
0 / 0 / 0
Регистрация: 25.08.2015
Сообщений: 1
25.08.2015, 21:55 #12
Блин... наткнулся на эту тему, дай думаю тут вопрос задам... знаю что тема старая)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class PageFragment extends Fragment implements LoaderCallbacks<Cursor>{
 
    public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
        return new MyCursorLoader(getActivity(), myDB);
    }
 
    static class MyCursorLoader extends CursorLoader {
 
          DBAdapter db;
 
          public MyCursorLoader(Context context, DBAdapter db) {
            super(context);
            this.db = db;
          }
 
          @Override
          public Cursor loadInBackground() {
              Cursor cursor = db.getAllRows();
              return cursor;
          }
}
Ругается на getActivity(). Пишет:

Required: android.support.v4.content.Loader <android.database.Cursor>
Found: "myPackageNameAndAppName".PageFragment.MyCursorLoader


Если getActivity() поменять на
Java
1
return new MyCursorLoader(this, myDB)
MyCursorLoader (android.content.Context, DBAdapter) in MyCursorLoader cannot be applied to
("myPackageNameAndAppName".PageFragment, DBAdapter)


Че он ждет? В конструктор MyCursorLoader передаю контекст и базу данных. ему не нравится....

Добавлено через 1 час 6 минут
Все... разобрался...
в секции импорта вместо

import android.support.v4.content.CursorLoader;
импортировал:

import android.support.v4.content.Loader;
0
EcoBoost
0 / 0 / 0
Регистрация: 31.05.2015
Сообщений: 1
15.11.2016, 02:33 #13
С одной таблицей вроде все работает. Но мне надо чтоб в ListView в 1 item'e была информация из РАЗНЫХ ТАБЛИЦ. Как это реализовать? И вообще есть информация по CursorLoader на русском, где расписано про методы и т.д.?
Спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2016, 02:33
Привет! Вот еще темы с ответами:

Android-support-v4 и настройка Eclips - Программирование Android
Перенес проект с дом. компа на рабочий, все работало нормально до определенного момента (видимо обновилось что либо где-то). Копировал на...

Для чего нужен android.support.v4 - Программирование Android
Вопрос к знатокам: почему AS по умолчанию импортирует в проект классы из библиотеки поддержки? minSdk 19 (4.4). Еще просвятите плз -...

Как подключить com.android.support:design в Eclipse - Программирование Android
Доброго дня! Недавно вышла новая библиотека com.android.support:design - вопрос как её подключить в среде Eclipse? От куда...

Как в среде Eclipse подключить библиотеку android.support.v7 ? - Программирование Android
Здравствуйте! Подскажите, пожалуйста, как при программировании в среде Eclipse под андроид подключить библиотеку android.support.v7 ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.11.2016, 02:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru