Передача значения из экстра в курсор - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь сгладить последние несколько ошибок в моем приложении. С моей текущей настройкой у меня есть пользователь пройти через список просмотра (Категория -> источник -> заголовок). Основываясь на позиции из списка, я передаю int, который используется моим курсором, чтобы отфильтровать результаты и дать элементы, которые принадлежат ранее выбранному элементу. После нескольких перемещений по различным действиям происходит сбой, поскольку приложение теряет значение указанного int (переходя назад и вперед по действиям). Я пытаюсь настроить getextra (), чтобы он не потерял это значение. Я настроил его, чтобы поместить и получить эти целые, но у меня возникли проблемы с привязкой их к моему курсору, так как он хочет получить доступ к этим int статическим способом, но я не получаю их статическим способом.

public class title extends ListActivity {

    Bundle extras = getIntent().getExtras();
    int categoryClick = extras.getInt("cateClick");
    int sourceClick = extras.getInt("sourceclick");

...

@Override
protected void onListItemClick(ListView list, View v, int position, long id)
{
    super.onListItemClick(list, v, position, id);
    titleClick = position;
    final Intent intent = new Intent(this, inputpage.class);
    intent.putExtra("cateclick", categoryClick);
    intent.putExtra("sourceclick", sourceClick);
    intent.putExtra("titleclick", titleClick);  
    startActivity(intent);
    }

Мой курсор без изменений по сравнению с тем, что я использовал, выглядит следующим образом

// retrieves all the descriptions for the edittext fields
      public  Cursor getUserWord() 
        {
            return myDataBase.query(USER_WORD_TABLE, new String[] {
                    KEY_ID, 
                    KEY_CATEGORY,
                    KEY_SOURCE, KEY_TITLE, KEY_USERWORD, KEY_QUICK 
                    }, 
                    KEY_CATEGORY+ "=" + categories.categoryClick + " AND " + KEY_SOURCE+ "=" 
                    +source.sourceClick + " AND " + KEY_TITLE+ "=" + title.titleClick, 
                    null, null, null, KEY_ID);

        }

В моей базе данных несколько таблиц, одна из которых для приведенного выше курсора - это изображение ниже. enter image description here

Эта установка, возможно, не лучший способ получить желаемый результат, но, будучи новичком в Android, SQLite и Java, это было то, что я смог заставить работать для того, что мне нужно.

Ошибка, которую я получал перед тем, как перейти на getextra, была

03-10 16:06:14.653: E/AndroidRuntime(939): Uncaught handler: thread main exiting due to uncaught exception
03-10 16:06:14.683: E/AndroidRuntime(939): java.lang.NullPointerException
03-10 16:06:14.683: E/AndroidRuntime(939):  at wanted.pro.madlibs.source.onListItemClick(source.java:55)
03-10 16:06:14.683: E/AndroidRuntime(939):  at android.app.ListActivity$2.onItemClick(ListActivity.java:312)
03-10 16:06:14.683: E/AndroidRuntime(939):  at android.widget.AdapterView.performItemClick(AdapterView.java:284)
03-10 16:06:14.683: E/AndroidRuntime(939):  at android.widget.ListView.performItemClick(ListView.java:3285)
03-10 16:06:14.683: E/AndroidRuntime(939):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
03-10 16:06:14.683: E/AndroidRuntime(939):  at android.os.Handler.handleCallback(Handler.java:587)
03-10 16:06:14.683: E/AndroidRuntime(939):  at android.os.Handler.dispatchMessage(Handler.java:92)
03-10 16:06:14.683: E/AndroidRuntime(939):  at android.os.Looper.loop(Looper.java:123)
03-10 16:06:14.683: E/AndroidRuntime(939):  at android.app.ActivityThread.main(ActivityThread.java:4363)
03-10 16:06:14.683: E/AndroidRuntime(939):  at java.lang.reflect.Method.invokeNative(Native Method)
03-10 16:06:14.683: E/AndroidRuntime(939):  at java.lang.reflect.Method.invoke(Method.java:521)
03-10 16:06:14.683: E/AndroidRuntime(939):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-10 16:06:14.683: E/AndroidRuntime(939):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-10 16:06:14.683: E/AndroidRuntime(939):  at dalvik.system.NativeStart.main(Native Method)

Вот скриншот, показывающий, что происходит. enter image description here После изменения int на static enter image description here после смены дополнительного на статический enter image description here

1 Ответ

0 голосов
/ 11 марта 2012

Исходя из скриншотов, вы не должны делать статические ссылки на ваши комплекты. Сделайте их переменными экземпляра и устанавливайте их каждый раз, когда вызывается ваш метод onCreate или onResume.

...