#android
#Android
Вопрос:
Мое приложение выходит из строя при длительном нажатии на первые элементы списка.На самом деле первым элементом является «Перейти в верхнюю папку», который добавляется вручную, а после «Перейти в верхнюю папку» появляется список элементов просмотра.Теперь я использую длительное нажатие на все элементы списка, кроме элементов «Перейти в верхнюю папку». Но когда я долго нажимаю «Перейти в папку вверх», мое приложение разбивается. Небольшая часть моего кода приведена ниже:
if (tt != null)
{
if ((m_remotefilepath == null)|| (m_remotefilepath.matches("/")))
{
tt.setText(items[position].m_FileName);
}
else
{
if (position > 0)
{
tt.setText(items[position].m_FileName);
}
else
{
tt.setText("Go To Up Folder");
imageView.setImageResource(R.drawable.up);
}
}
}
МОЙ журнал cat:
04-27 12:06:21.635: DEBUG/AndroidRuntime(230): Shutting down VM
04-27 12:06:21.645: WARN/dalvikvm(230): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-27 12:06:21.686: ERROR/AndroidRuntime(230): Uncaught handler: thread main exiting due to uncaught exception
04-27 12:06:21.965: ERROR/AndroidRuntime(230): java.lang.NullPointerException
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at com.officelinq.android.OfficeLinQ.onCreateContextMenu(OfficeLinQ.java:1549)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.view.View.createContextMenu(View.java:4086)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at com.android.internal.view.menu.ContextMenuBuilder.show(ContextMenuBuilder.java:81)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at com.android.internal.policy.impl.PhoneWindow$DecorView.showContextMenuForChild(PhoneWindow.java:1848)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.view.ViewGroup.showContextMenuForChild(ViewGroup.java:458)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.view.ViewGroup.showContextMenuForChild(ViewGroup.java:458)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.view.ViewGroup.showContextMenuForChild(ViewGroup.java:458)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.view.ViewGroup.showContextMenuForChild(ViewGroup.java:458)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.view.ViewGroup.showContextMenuForChild(ViewGroup.java:458)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.view.ViewGroup.showContextMenuForChild(ViewGroup.java:458)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.widget.AbsListView.performLongPress(AbsListView.java:1703)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.widget.AbsListView.access$500(AbsListView.java:71)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:1656)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.os.Handler.handleCallback(Handler.java:587)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.os.Handler.dispatchMessage(Handler.java:92)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.os.Looper.loop(Looper.java:123)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at android.app.ActivityThread.main(ActivityThread.java:4363)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at java.lang.reflect.Method.invokeNative(Native Method)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at java.lang.reflect.Method.invoke(Method.java:521)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-27 12:06:21.965: ERROR/AndroidRuntime(230): at dalvik.system.NativeStart.main(Native Method)
04-27 12:06:22.235: INFO/Process(34): Sending signal. PID: 230 SIG: 3
04-27 12:06:22.285: INFO/dalvikvm(230): threadid=7: reacting to signal 3
04-27 12:06:22.963: INFO/dalvikvm(230): Wrote stack trace to '/data/anr/traces.txt'
Код в строке № 1549 является:
menu.setHeaderTitle(m_adapter.items[info.position].m_FileName);
Комментарии:
1. Пожалуйста, предоставьте трассировку стека из выходных данных logcat, если ваше приложение выходит из строя.
2. У вас есть
NullPointerException
при создании контекстного меню вcom.officelinq.android.OfficeLinQ.onCreateContextMenu(OfficeLinQ.java:1549)
. Какова точная эта строка кода?
Ответ №1:
Когда вы выполняете «длинный» щелчок, он пытается создать контекстное меню, которое не было установлено. Пожалуйста, установите контекстное меню для элементов, и, возможно, ваша проблема будет решена.
Комментарии:
1. общедоступная пустота onCreateContextMenu (контекстное меню, просмотр v, ContextMenuInfo menuInfo) { switch (m_tmpData.m_tempParamInt4) { case LIST_TYPE_FILEMANAGER: // List FileManager if (v.getId() == android.R.id.list) { AdapterView. AdapterContextMenuInfo info = (AdapterView. AdapterContextMenuInfo) menuInfo; menu.setHeaderTitle(m_adapter.items[info.position]. m_FileName); String[] MenuItems = getResources() .getStringArray(R.array.menu); for (int i = 0; i < MenuItems. длина; i ) { menu.add(Menu.NONE, i, i, MenuItems[i]); } } разрыв;
2. Пожалуйста, подскажите мне, как установить контекстное меню для элементов.
3. Возможно, тип вашего tt или элементов [i] имеет setContextMenu () или аналогичный, пожалуйста, проверьте API.
Ответ №2:
Сегодня у меня тоже возникла эта проблема. Это вызвано использованием SELECTION_MODE_MULTIPLE_MODAL без вызова ListView.setMultiChoiceModeListener(). Либо используйте SELECTION_MODE_MULTIPLE, либо установите прослушиватель, чтобы он исчез.