2013-10-01 5 views
1

У меня есть простой текстовый просмотр в linearlayout. Макет для элементов в ListView. Я использую textView в качестве инструмента для отладки: для отслеживания данных. Если я получаю getText() в представлении, все в порядке. Но если я делаю setText, я получаю исключение. Поэтому я помещал две строки один за другим. setText все равно выдает исключение. Как это возможно? Если у ресурса возникла проблема, getText должен завершиться неудачей. Но он отлично печатает.android TextView странное поведение

фрагмент кода:

print(debuggingData.getText());//goes through fine 
debuggingData.setText("some text");//throws exception 

ошибка:

FATAL EXCEPTION: main 
android.content.res.Resources$NotFoundException: String resource ID #0x0 
    at android.content.res.Resources.getText(Resources.java:1057) 
    at android.widget.TextView.setText(TextView.java:4111) 
    at com.mycompany.mygame.adapter.MyListAdapter.getView(MyListAdapter.java:115) 
    at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220) 
    at android.widget.AbsListView.obtainView(AbsListView.java:2613) 
    at android.widget.ListView.makeAndAddView(ListView.java:1838) 
    at android.widget.ListView.fillDown(ListView.java:681) 
    at android.widget.ListView.fillSpecific(ListView.java:1339) 
    at android.widget.ListView.layoutChildren(ListView.java:1637) 
    at android.widget.AbsListView.onLayout(AbsListView.java:2431) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1440) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at com.slidingmenu.lib.CustomViewAbove.onLayout(CustomViewAbove.java:476) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1440) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
    at android.view.View.layout(View.java:14482) 
    at android.view.ViewGroup.layout(ViewGroup.java:4469) 
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2151) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1970) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1183) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4863) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
    at android.view.Choreographer.doFrame(Choreographer.java:532) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
    at android.os.Handler.handleCallback(Handler.java:725) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5328) 
    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:1102) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
    at dalvik.system.NativeStart.main(Native Method) 
+3

в вас реальном коде, это действительно «какой-то текст»? – wtsang02

+0

напишите свой код. – Manishika

ответ

2

Кажется, что вы пытаетесь отобразить целое число, не преобразовывая его сначала в строку. setText(0) ищет строку с идентификатором ресурса 0 и пытается загрузить ее, а если она не может, она выдает исключение.

Чтобы избежать этой проблемы, просто преобразовать целое число в строку с Integer.toString():

debuggingData.setText(Integer.toString(...)); 
+0

Я смотрю на трассировку ошибок, я не вижу, как вы могли это рассказать. Где ключ? –

+0

Ну, у меня была эта проблема два или три раза, поэтому я знал, что это было, когда я увидел это исключение. Я думаю, что почти каждый разработчик сталкивался с этим хотя бы один раз ... этот метод должен быть переименован в нечто вроде 'setTextFromResource()'. – Dalmas

1

ошибка выглядит, как вы на самом деле проходит целое число setText метода. Если это так, он попытается найти int в строках ресурсов, выбросив Exception, если не сможет найти его.

Смежные вопросы