0

[解決済み]

私のコードには次の構造があります。

ListView accountListView = (ListView) findViewById(R.id.accountListing);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_view_item, R.id.nameTextView, currentAccounts);
accountListView.setAdapter(adapter);

accountListView.performItemClick(null, 0, 0);

currentAccounts は配列であり、その上にデータがあります。

アダプターを設定した後で itemClick を実行しようとすると、NullPointerException が発生します。

また、OnKeyPress をオーバーライドして「performItemClick」を実行すると、正常に動作します。

アダプターの設定後にクリックを実行しようとすると、なぜ機能しないのか知りたいです。(いくつかのデバッグの後、lastVisiblePosition が -1 であることがわかりました)なぜですか?

[編集]

((ListView)findViewById(R.id.accountListing)).performItemClick(null, 0, 0);アダプターを設定した直後に使用した場合を除き、動作します。(詳しくはコメントを見てください)

[編集2]

スタックトレース:

07-24 13:07:56.710: E/AndroidRuntime(9455): FATAL EXCEPTION: main
07-24 13:07:56.710: E/AndroidRuntime(9455): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.device/com.app.device.WelcomeActivity}: java.lang.NullPointerException
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.app.ActivityThread.access$600(ActivityThread.java:140)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.os.Looper.loop(Looper.java:137)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.app.ActivityThread.main(ActivityThread.java:4895)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at java.lang.reflect.Method.invokeNative(Native Method)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at java.lang.reflect.Method.invoke(Method.java:511)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at dalvik.system.NativeStart.main(Native Method)
07-24 13:07:56.710: E/AndroidRuntime(9455): Caused by: java.lang.NullPointerException
07-24 13:07:56.710: E/AndroidRuntime(9455):     at com.app.device.WelcomeActivity.unselectViews(WelcomeActivity.java:1637)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at com.app.device.WelcomeActivity.access$24(WelcomeActivity.java:1632)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at com.app.device.WelcomeActivity$27.onItemClick(WelcomeActivity.java:1447)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.widget.AdapterView.performItemClick(AdapterView.java:298)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.widget.AbsListView.performItemClick(AbsListView.java:1280)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at com.app.device.WelcomeActivity.UpdateAccountList(WelcomeActivity.java:1653)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at com.app.device.WelcomeActivity.onCreate(WelcomeActivity.java:238)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.app.Activity.performCreate(Activity.java:5163)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
07-24 13:07:56.710: E/AndroidRuntime(9455):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061)
07-24 13:07:56.710: E/AndroidRuntime(9455):     ... 11 more

前もって感謝します!

[解決]

メソッドでitemClick を実行しようとしましたonCreate()が、画面がユーザーに完全に表示されません。使用しonWindowFocusChanged()てうまくいきました!Android ドキュメントの onWindowFocusChanged()

みんなありがとう。

4

3 に答える 3

0

perfomItemClick のパラメーターとして null を渡しています。

ListView accountListView = (ListView) findViewById(R.id.accountListing);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_view_item,         R.id.nameTextView, currentAccounts);
accountListView.setAdapter(adapter);
accountListView.performItemClick(adapter, 0, 0);

お役に立てれば...

よろしく!

于 2013-07-23T20:46:49.870 に答える
0

[解決済み]

メソッドでitemClick を実行しようとしましたonCreate()が、画面がユーザーに完全に表示されません。使用しonWindowFocusChanged()てうまくいきました!Android ドキュメントの onWindowFocusChanged()

みんなありがとう。

于 2013-07-24T17:03:36.853 に答える
0

null の代わりに、パラメーターで accountListView を performItemClick に渡す必要があると思います。

于 2013-07-23T21:12:49.737 に答える