Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: AutoCompleteTextView + база sqlite

Вопрос вот в чем, имеется база и элемент AutoCompleteTextView. Задача в том, чтобы в AutoCompleteTextView подгружался столбец с названиями из столбца базы.

Дело в том что у AutoCompleteTextView должен подгружаться массив строк. А у меня не получается из базы выборку занести в массив. Делаю так
Код Java(TM) 2 Platform Standard Edition 5.0
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
package com.example.des.myapplication;
 
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
 
public class MainActivity extends AppCompatActivity implements TextWatcher {
    private DatabaseHelper mDatabaseHelper;
    private SQLiteDatabase mSqLiteDatabase;
   
 
 
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
 
 
            mDatabaseHelper = new DatabaseHelper(this, "dbMen.db", null, 1);
            mSqLiteDatabase = mDatabaseHelper.getWritableDatabase();
            Cursor cursor = mSqLiteDatabase.query("basa", new String[]{"_id", DatabaseHelper.NAME_COLUMN},
                    null, null,
                    DatabaseHelper.NAME_COLUMN, null, null);
 
        String[] from = new String[] {"_id", DatabaseHelper.NAME_COLUMN };
 
 
                // создаем адаптер и настраиваем список
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                        android.R.layout.simple_dropdown_item_1line,from);
                AutoCompleteTextView textView = (AutoCompleteTextView)
                        findViewById(R.id.autoCompleteTextView);
                textView.setAdapter(adapter);
 
 
        cursor.close();
        }
 
 
 
 
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
 
    }
 
    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
 
    }
 
    @Override
    public void afterTextChanged(Editable editable) {
 
    }
}
Но видимо что то не то. Он мне только название столбца пихает туда

Добавлено через 46 минут
Пробую массив создать таким образом, но что то не так...
Код Java(TM) 2 Platform Standard Edition 5.0
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
package com.example.des.myapplication;
 
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
 
public class MainActivity extends AppCompatActivity implements TextWatcher {
    private DatabaseHelper mDatabaseHelper;
    private SQLiteDatabase mSqLiteDatabase;
 
 
 
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
 
        mDatabaseHelper = new DatabaseHelper(this, "dbMen.db", null, 1);
        mSqLiteDatabase = mDatabaseHelper.getWritableDatabase();
        Cursor cursor = mSqLiteDatabase.query("basa", new String[]{DatabaseHelper.NAME_COLUMN},
                null, null,
                DatabaseHelper.NAME_COLUMN, null, null);
 
        String[] name = null;
        if (cursor.moveToFirst()) {
            // задаем размер массива
            name = new String;
            int i = 0;
            do {
                // Считываем строку из результата запроса и добавляем ее в массив students
                String firstName = cursor.getString(cursor.getColumnIndex(DatabaseHelper.NAME_COLUMN));
 
                name[i] = firstName;
                i++;
            } while (cursor.moveToNext()); // далее переводим Cursor на следующую позицию
            // создаем адаптер и настраиваем список
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_dropdown_item_1line, name);
            AutoCompleteTextView textView = (AutoCompleteTextView)
                    findViewById(R.id.autoCompleteTextView);
            textView.setAdapter(adapter);
        }
        cursor.close();
 
 
 
 
    }
 
 
 
 
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
 
    }
 
    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
 
    }
 
    @Override
    public void afterTextChanged(Editable editable) {
 
    }
}
Ответ:
Сообщение от YuraAAA
включите дебаг, посмотрите что возвращается из базы
По дебугерру он добавляет все записи в массив все 146 строк, но...

Начинаю набирать текст, он мне не предлагает выбора
Вопрос: Удалить элемент в SQLite под определенным ID

Java(TM) 2 Platform Standard Edition 5.0
1
2
3
cursor.moveToLast();
int a = cursor.getPosition();
sqLiteDatabase.delete(DATABASE_TABLE,null,new String[]{String.valueOf(a)}); // Вылетает именно тут
Хочу удалять последний элемент, однако вылетает.

Приложение остановлено - пишет.

Добавлено через 22 часа 27 минут
Ладно, спрошу проще, может быть так:

Как удалить элемент в базе, например, под номером 3 методом delete ?
Ответ: PYPS, Обязательно научусь.... Если я объявил переменные так:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
public static final String DATABASE_NAME = "MY_DATABASE";
    public static final String DATABASE_TABLE = "MY_TABLE";
    public static final int DATABASE_VERSION = 1;
    public static final String KEY_CONTENT = "Content";
 
 // Создаем таблицу с данными MY_DATABASE:
    private static final String SCRIPT_CREATE_DATABASE = "create table " + DATABASE_TABLE +" ( " +KEY_CONTENT+ ");" ;
И теперь я такой хочу удалять элемент, скажем последний:

Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
String[] columns = new String[]{KEY_CONTENT};
        Cursor cursor = sqLiteDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
 
 
        cursor.moveToLast();
        int a = cursor.getPosition();
       
        return sqLiteDatabase.delete("table", ????????????????????,null); // вот тут как написать то?=)
Вопрос: Как сделать синхронизацию между базами SQlite и MySql?

Здравствуйте! У кого нибудь есть примеры или опыт на эту тему? Знаю что через JSON можно передать данные но на эту идет время каждый раз загружать из базы... Нужно реализовать так чтоб один раз загружал и сохранил у себя в sqlite... Или есть другие варианты... Рекомендуйте! Я токо начинаю изучать в этой сфере
Ответ:
Сообщение от push007
каждый раз загружать из базы
Зачем каждый раз?
Отслеживайте первую установку приложения на смартфоне и запрашивайте загрузку базы с сервера. Да, лучшим вариантом будет получение данных через JSON. Сохраняете полученные данные в sqlite и при последующих запусках приложения не делаете запрос на сервер.
Вопрос: База SQLite: метод по созданию таблицы не вызывается

Не пойму что не так.
Раньше с ним не работал
Пытался реализовать пример из сети, но что то не хочет, подозреваю что не создана сама база, а точнее что не вызывается метод по созданию.
Java(TM) 2 Platform Standard Edition 5.0
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
public class NewDB extends Activity {
 
    final String LOG_TAG = "myLogs";
 
    DBHelper dbHelper;
 
    public void Insert(String text, String title) {
 
        dbHelper = new DBHelper(this);
 
        // создаем объект для данных
        ContentValues cv = new ContentValues();
 
        // подключаемся к БД
        SQLiteDatabase db = dbHelper.getWritableDatabase();
 
        Log.d(LOG_TAG, "--- Insert in mytable: ---");
        // подготовим данные для вставки в виде пар: наименование столбца - значение
 
        cv.put("name", text);
        cv.put("email", title);
        // вставляем запись и получаем ее ID
        long rowID = db.insert("mytable", null, cv);
        Log.d(LOG_TAG, "row inserted, ID = " + rowID);
 
        // закрываем подключение к БД
        dbHelper.close();
 
    }
 
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, 1);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.d(LOG_TAG, "--- onCreate database ---");
            // создаем таблицу с полями
            db.execSQL("create table mytable ("
                    + "id integer primary key autoincrement,"
                    + "name text,"
                    + "email text" + ");");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
        }
    }
 
}
ошибки
User-space exception detected!
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference

FATAL EXCEPTION: main
java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
Ответ: Spelcrawler,
и что мне дает этот текст ? INTEGER PRIMARY KEY AUTOINCREMENT
там даже не указано имя
Вопрос: Как подключить готовую базу Sqlite на проект

Привет друзья.
Я учусь программировать под андроид и много чего прочитал с интернета все равно там непонятно. То есть у кого нибудь есть пример которые там было (сохранить данные через Editview, Поиск, удалить, обновить и особенно показать данные на gridview) такие возможности. если у кого есть пример скиньте. Заранее благодарен.
Ответ: Если я правильно понял, скидываешь на телефон .db файл, оттуда открываешь как обычно, только вместо дефаултного пути вводишь свой, а не в проект...
Вопрос: Выборка данных за последние 24 часа SQLite

Необходимо получить данные из базы SQLite за последние 24 часа. В базе одна таблица с 3-мя колонками(широта, долгота и время). Время определяю через Calendar:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
Calendar addTimeCalendar;
public String getAddTime() {
    addTimeCalendar = Calendar.getInstance();
    return addTime = String.valueOf(addTimeCalendar.getTimeInMillis());
}
Затем записываю в базу:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
public void addCoordinates() {
    SQL sqlHelper = new SQL(this);
    SQLiteDatabase db = sqlHelper.getWritableDatabase();
    ContentValues cv = new ContentValues();
    Log.d(LOG_TAG, "--- Insert in coordinates: ---");
    cv.put("Latitude", latitude);
    cv.put("Longitude", longitude);
    cv.put("Time", getAddTime());
    long rowID = db.insert("coordinates", null, cv);
    db.close();
    sqlHelper.close();
}
Для выборки такой запрос:
Код SQL
1
SELECT * FROM coordinates WHERE datetime('now', 'start of day', '-1 day')
Но в результате выборка получается, как если использовать
Код SQL
1
SELECT * FROM coordinates
Что я делаю не так?Или какие возможные другие варианты решения?
Ответ:
Сообщение от YuraAAA
SkyL1ne_tm, Храните время не как String, а как long.
спасибо большое! получилось!
Вопрос: Работа с готовой SQLite базой на андроид

Здравствуйте!
Пытаюсь подключить готовую sqlite базу с помощью этого кода, взятого из интернета:
Код Java(TM) 2 Platform Standard Edition 5.0
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
package com.alexvsalex.HelpforMath;
 
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
 
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
 
public class SQLite extends SQLiteOpenHelper {
 
    // путь к базе данных вашего приложения
    private static String DB_PATH = "/data/data/com.alexvsalex.HelpforMath/databases/";
    private static String DB_NAME = "android";
    private SQLiteDatabase myDataBase;
    private final Context mContext;
 
    /**
     * Конструктор
     * Принимает и сохраняет ссылку на переданный контекст для доступа к ресурсам приложения
     * @param context
     */
    public SQLite(Context context) {
        super(context, DB_NAME, null, 1);
        this.mContext = context;
    }
 
    /**
     * Создает пустую базу данных и перезаписывает ее нашей собственной базой
     * */
    public void createDataBase() throws IOException {
 
        if(!checkDataBase()){
            this.getReadableDatabase();
 
            try {
                copyDataBase();
            } catch (IOException e) {
                throw new Error("Error copying database");
            }
        }
    }
 
    /**
     * Проверяет, существует ли уже эта база, чтобы не копировать каждый раз при запуске приложения
     * @return true если существует, false если не существует
     */
    private boolean checkDataBase(){
        SQLiteDatabase checkDB;
 
        try{
            String myPath = DB_PATH + DB_NAME;
            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
            checkDB.close();
            return true;
        }catch(SQLiteException e){
            return false;
        }
    }
 
    /**
     * Копирует базу из папки assets заместо созданной локальной БД
     * Выполняется путем копирования потока байтов.
     * */
    private void copyDataBase() throws IOException{
        //Открываем локальную БД как входящий поток
        InputStream myInput = mContext.getAssets().open(DB_NAME);
 
        //Путь ко вновь созданной БД
        String outFileName = DB_PATH + DB_NAME;
 
        //Открываем пустую базу данных как исходящий поток
        OutputStream myOutput = new FileOutputStream(outFileName);
 
        //перемещаем байты из входящего файла в исходящий
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0){
            myOutput.write(buffer, 0, length);
        }
 
        //закрываем потоки
        myOutput.flush();
        myOutput.close();
        myInput.close();
    }
 
    public void openDataBase() throws SQLException {
        //открываем БД
        String myPath = DB_PATH + DB_NAME;
        myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    }
 
    @Override
    public synchronized void close() {
        if(myDataBase != null)
            myDataBase.close();
        super.close();
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
 
    public Cursor dataDirect(String s){
        openDataBase();
        return myDataBase.query(s,new String[]{"Name", "Location"},null,null,null,null,null);
    }
}
Вызываю его вот так:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
try {
            SQLite myDbHelper = new SQLite(this);
            myDbHelper.createDataBase();
        } catch (IOException ioe) {
            throw new Error("Unable to create database");
        }
android.db находится в /assets/
Лог:
Код Java(TM) 2 Platform Standard Edition 5.0
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
07-17 14:00:37.724    1146-1146/com.alexvsalex.HelpforMath I/SqliteDatabaseCpp﹕ sqlite returned: error code = 14, msg = cannot open file at line 27701 of [8609a15dfa], db=/data/data/com.alexvsalex.HelpforMath/databases/android
07-17 14:00:37.724    1146-1146/com.alexvsalex.HelpforMath I/SqliteDatabaseCpp﹕ sqlite returned: error code = 14, msg = os_unix.c: open() at line 27701 - "" errno=2 path=/data/data/com.alexvsalex.HelpforMath/databases/android, db=/data/data/com.alexvsalex.HelpforMath/databases/android
07-17 14:00:37.724    1146-1146/com.alexvsalex.HelpforMath E/SqliteDatabaseCpp﹕ sqlite3_open_v2("/data/data/com.alexvsalex.HelpforMath/databases/android", &handle, 1, NULL) failed
07-17 14:00:37.754    1146-1146/com.alexvsalex.HelpforMath E/SQLiteDatabase﹕ Failed to open the database. closing it.
    android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file
            at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1013)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)
            at com.alexvsalex.HelpforMath.SQLite.checkDataBase(SQLite.java:58)
            at com.alexvsalex.HelpforMath.SQLite.createDataBase(SQLite.java:38)
            at com.alexvsalex.HelpforMath.DirectoryActivity.onCreate(DirectoryActivity.java:47)
            at android.app.Activity.performCreate(Activity.java:4465)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
07-17 14:00:37.813    1146-1146/com.alexvsalex.HelpforMath D/AndroidRuntime﹕ Shutting down VM
07-17 14:00:37.813    1146-1146/com.alexvsalex.HelpforMath W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
07-17 14:00:37.864    1146-1146/com.alexvsalex.HelpforMath E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.Error: Error copying database
            at com.alexvsalex.HelpforMath.SQLite.createDataBase(SQLite.java:44)
            at com.alexvsalex.HelpforMath.DirectoryActivity.onCreate(DirectoryActivity.java:47)
            at android.app.Activity.performCreate(Activity.java:4465)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
07-17 14:00:37.934    1146-1149/com.alexvsalex.HelpforMath D/dalvikvm﹕ GC_CONCURRENT freed 316K, 7% free 6677K/7111K, paused 4ms+3ms
07-17 14:00:37.944    1146-1156/com.alexvsalex.HelpforMath E/SQLiteDatabase﹕ close() was never explicitly called on database '/data/data/com.alexvsalex.HelpforMath/databases/android'
    android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
            at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
            at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
            at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
            at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:231)
            at com.alexvsalex.HelpforMath.SQLite.createDataBase(SQLite.java:39)
            at com.alexvsalex.HelpforMath.DirectoryActivity.onCreate(DirectoryActivity.java:47)
            at android.app.Activity.performCreate(Activity.java:4465)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
07-17 14:00:38.174    1146-1151/com.alexvsalex.HelpforMath I/dalvikvm﹕ threadid=3: reacting to signal 3
07-17 14:00:38.184    1146-1151/com.alexvsalex.HelpforMath I/dalvikvm﹕ Wrote stack traces to '/data/anr/traces.txt'
07-17 14:00:38.444    1146-1151/com.alexvsalex.HelpforMath I/dalvikvm﹕ threadid=3: reacting to signal 3
07-17 14:00:38.454    1146-1151/com.alexvsalex.HelpforMath I/dalvikvm﹕ Wrote stack traces to '/data/anr/traces.txt'
07-17 14:02:51.833    1146-1146/com.alexvsalex.HelpforMath I/Process﹕ Sending signal. PID: 1146 SIG: 9
Пробовал выносить в отдельный поток - не помогло.
В чем причина ошибки?
Ответ: Пробовал, и "android", и "android.db" - эффекта нет.
Заметил вот такую вещь: при первом запуске приложения оно выдает ошибку, и в папке databases появляется база. После этого запускается нормально, но это не мой файл, потому что у меня база с одной таблицей "android_metadata", одной колонкой "locale", и одной записью "en_US", а там с записью "ru_RU".
Вопрос: SQLite, ошибка: не существует поля "почта" в базе данных

Создал самую простую программку для понимания баз данных SQLite.
Есть два поля: имя и почта. 3 кнопки: добавить в базу данных, считать с базы данных и стереть базу данных.
Выдает ошибку что не существует поля "почта" в базе данных. Помогите найти ошибку в коде.

main_activity.xml
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
 
        <EditText
            android:id="@+id/etName"
            android:hint="Name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </EditText>
 
        <EditText
            android:id="@+id/etEmail"
            android:hint="Email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </EditText>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/btnAdd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Add">
        </Button>
        <Button
            android:id="@+id/btnRead"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Read">
        </Button>
        <Button
            android:id="@+id/btnClear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Clear">
        </Button>
    </LinearLayout>
</LinearLayout>
класс для базы данных DBHelper.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
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class DBHelper  extends SQLiteOpenHelper{
 
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "contactDb";
    public static final String TABLE_CONTACTS = "contacts";
 
    public static final String KEY_ID = "_id";
    public static final String KEY_NAME = "name";
    public static final String KEY_MAIL = "mail";
 
    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_CONTACTS + "(" + KEY_ID
                + " integer primary key," + KEY_NAME + " text," + KEY_MAIL + " text" + ")");
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists " + TABLE_CONTACTS);
 
        onCreate(db);
 
    }
}
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
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
 
    Button btnAdd, btnRead, btnClear;
    EditText etName, etEmail;
 
    DBHelper dbHelper;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        btnAdd = (Button) findViewById(R.id.btnAdd);
        btnAdd.setOnClickListener(this);
 
        btnRead = (Button) findViewById(R.id.btnRead);
        btnRead.setOnClickListener(this);
 
        btnClear = (Button) findViewById(R.id.btnClear);
        btnClear.setOnClickListener(this);
 
        etName = (EditText) findViewById(R.id.etName);
        etEmail = (EditText) findViewById(R.id.etEmail);
 
        dbHelper = new DBHelper(this);
    }
 
    @Override
    public void onClick(View v) {
 
        String name = etName.getText().toString();
        String email = etEmail.getText().toString();
 
        SQLiteDatabase database = dbHelper.getWritableDatabase();
 
        ContentValues contentValues = new ContentValues();
 
 
        switch (v.getId()) {
 
            case R.id.btnAdd:
                contentValues.put(DBHelper.KEY_NAME, name);
                contentValues.put(DBHelper.KEY_MAIL, email);
 
                database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
                break;
 
            case R.id.btnRead:
                Cursor cursor = database.query(DBHelper.TABLE_CONTACTS, null, null, null, null, null, null);
 
                if (cursor.moveToFirst()) {
                    int idIndex = cursor.getColumnIndex(DBHelper.KEY_ID);
                    int nameIndex = cursor.getColumnIndex(DBHelper.KEY_NAME);
                    int emailIndex = cursor.getColumnIndex(DBHelper.KEY_MAIL);
                        do {
                            Log.d("mLog", "ID = " + cursor.getInt(idIndex) +
                                            ", name = " + cursor.getString(nameIndex) +
                                            ", email = " + cursor.getString(emailIndex));
                        } while (cursor.moveToNext());
                } else
                    Log.d("mLog","0 rows");
 
                cursor.close();
                break;
 
            case R.id.btnClear:
                database.delete(DBHelper.TABLE_CONTACTS, null, null);
                break;
        }
        dbHelper.close();
    }
}
Ответ: Данный код правильный! Скорее всего база данных была создана раньше с ошибкой. Пересоздал проект и все заработало! Тему Можно закрывать!
Вопрос: База данных в Android приложении

Такая проблема, у меня есть база в MySQL, а в приложении нужно, чтобы база была в формате Sqlite, никак не получается конвертировать ее, не подскажете что делать?
Ответ: php умеет работать с sqlite, напишите срипт и перегоните одну базу в другую.
что-то вроде этого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
// подключение базы SQLite
$db = new SQLite3('mydb.db');
// выборка из базы SQLite
$query = $db->query("SELECT * from table1"); 
 
while ($entry = $query->fetchArray(SQLITE3_ASSOC)) {
    $title = $entry['title'];
    $intro = $entry['intro'];
    $text = $entry['text'];
    
    mysql_query("insert into mysql_table1 values (NULL, '$title', '$intro', '$text')"); 
}
Только, как видите, это пример конвертации в обратную сторону. Из sqlite в mysql. Но принцип тот же.
Вопрос: Как брать путь картинки в sqlite, и сетить на айтем в адаптере?

Добрый день!
подскажите пожалуйста как это делается?

в getView() адаптера так:
Java
1
2
3
   titleI = cursorx.getString(cursorx.getColumnIndexOrThrow("imagePath"));
        int resID = ctx.getResources().getIdentifier(titleI, "drawable", ctx.getPackageName());
        ((ImageView) view.findViewById(R.id.imagehiLo)).setImageResource(resID);
путь картинки в базе в таком виде "src/main/res/drawable/strel1.png"

ошибка такая:

Кликните здесь для просмотра всего текста
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
04-14 11:09:17.761 3848-3848/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: com.dis.arsenalprice, PID: 3848
                                                 android.database.CursorIndexOutOfBoundsException: Index 31 requested, with a size of 31
                                                     at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
                                                     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
                                                     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
                                                     at com.dis.arsenalprice.BoxAdapter.getView(BoxAdapter.java:87)
                                                     at android.widget.AbsListView.obtainView(AbsListView.java:2346)
                                                     at android.widget.ListView.makeAndAddView(ListView.java:1875)
                                                     at android.widget.ListView.fillDown(ListView.java:702)
                                                     at android.widget.ListView.fillFromTop(ListView.java:763)
                                                     at android.widget.ListView.layoutChildren(ListView.java:1684)
                                                     at android.widget.AbsListView.onLayout(AbsListView.java:2148)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                                                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                                                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1627)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037)
                                                     at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747)
                                                     at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
                                                     at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1156)
                                                     at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:760)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                                                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                                                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                                                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                                                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                     at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
                                                     at android.view.View.layout(View.java:16630)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
                                                     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
                                                     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                                                     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                                                     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                     at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                     at android.view.Choreographer.doFrame(Choreographer.java:606)
                                                     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                    at android.os.Handler.dispatchMessage(Handler.


подскажите где ошибся?
Ответ: ExFau$t, вот адаптер:

Кликните здесь для просмотра всего текста
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
public class BoxAdapter extends BaseAdapter {
    Context ctx;
    LayoutInflater lInflater;
    private List<Product> list = null; //Список
    private ArrayList<Product> objects; //массив для фильтра списка
    Product p;
    Cursor cursorx;
    String titleI;
 
    public BoxAdapter(Context context, Cursor cursor, List<Product> list) {
 
        ctx = context;
        //objects = products;
        this.list = list;
        lInflater = LayoutInflater.from(ctx);
        this.objects = new ArrayList<Product>();
        this.objects.addAll(list);
        cursorx = cursor;
        //lInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
 
 
    // кол-во элементов
    @Override
    public int getCount() {
        return list.size();
    }
 
    // элемент по позиции
    @Override
    public Object getItem(int position) {
        return list.get(position);
    }
 
    // id по позиции
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    // пункт списка
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // используем созданные, но не используемые view
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.list_item, parent, false);
        }
 
        if (MainActivity.cursInt == 0) {
            ((TextView) view.findViewById(R.id.textCurs)).setVisibility(View.INVISIBLE);
            //  Log.d("myLogs", "cursInt = 0");
        } else {
            ((TextView) view.findViewById(R.id.textCurs)).setVisibility(View.VISIBLE);
            //   Log.d("myLogs", "cursInt != 0");
        }
        p = getProduct(position);
 
        // заполняем View в пункте списка данными из товаров: наименование, цена и картинка
        ((TextView) view.findViewById(R.id.pro_item)).setText(p.getName());
 
 
        titleI = cursorx.getString(cursorx.getColumnIndexOrThrow("imagePath"));
        int resID = ctx.getResources().getIdentifier(titleI, "drawable", ctx.getPackageName());
        ((ImageView) view.findViewById(R.id.imagehiLo)).setImageResource(resID);
 
        ((TextView) view.findViewById(R.id.pro_item_price)).setText(p.getPrice() + "");
        ((TextView) view.findViewById(R.id.textCurs)).setText(p.getCurs() + "");
        // ((ImageView) view.findViewById(R.id.ivImage)).setImageResource(p.image);
 
        return view;
    }
 
    // товар по позиции
    Product getProduct(int position) {
        return ((Product) getItem(position));
    }
 
    // Filter Class
    public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        // Log.d("myLogs", charText);
 
        list.clear();
        if (charText.length() == 0) {
            list.addAll(objects);
 
        } else {
 
            for (Product prod : objects) {
 
                if (prod.getName().toLowerCase(Locale.getDefault()).contains(charText)) {
                    list.add(prod);
                }
            }
        }
        notifyDataSetChanged();
    }
}
//    }


вот так путь попадает в базу(в onCreateView фрагмента со списком):
Java
1
2
    flagP = "R.drawable.radiobox_blank.png";
                            db.updRec(Integer.parseInt(ids), lastP, flagP);
ну и курсор как обычно (в onCreateView фрагмента со списком):
Java
1
2
3
   db = new DB(getActivity());
            db.open(); //подключение к базе
            cursor = db.getAllData();//получение курсора
нынешняя ошибка:
Кликните здесь для просмотра всего текста
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
FATAL EXCEPTION: main
                                                                      Process: com.dis.arsenalprice, PID: 21661
                                                                      android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 32
                                                                          at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
                                                                          at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
                                                                          at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
                                                                          at com.dis.arsenalprice.BoxAdapter.getView(BoxAdapter.java:89)
                                                                          at android.widget.AbsListView.obtainView(AbsListView.java:2263)
                                                                          at android.widget.ListView.makeAndAddView(ListView.java:1790)
                                                                          at android.widget.ListView.fillDown(ListView.java:691)
                                                                          at android.widget.ListView.fillFromTop(ListView.java:752)
                                                                          at android.widget.ListView.layoutChildren(ListView.java:1630)
                                                                          at android.widget.AbsListView.onLayout(AbsListView.java:2091)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
                                                                          at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
                                                                          at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1627)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037)
                                                                          at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747)
                                                                          at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
                                                                          at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1156)
                                                                          at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:760)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
                                                                          at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
                                                                          at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
                                                                          at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
                                                                          at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
                                                                          at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
                                                                          at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
                                                                          at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
                                                                          at android.view.View.layout(View.java:14817)
                                                                          at android.view.ViewGroup.layout(ViewGroup.java:4631)
                                                                          at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1987)
                                                                          at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1744)
                                                                          at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
                                                                          at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
                                                                          at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
                                                                          at android.view.Choreographer.doCallbacks(Choreographer.java:574)
                                                                          at android.view.Choreographer.doFrame(Choreographer.java:544)
                                                                          at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
                                                                          at android.os.Handler.handleCallback(Handler.java:733)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                          at android.os.Looper.loop(Looper.java:136)
                                                                        at android.app.ActivityThread.m