2

配列リストの内容を AlertDialog に追加しようとしていますが、エラーが発生します:

java.lang.IllegalStateException: Could not execute method of the activity

問題が発生しているコードスニペットは次のとおりです。

 public void ShowOnlineUserDialog(){
     CharSequence[] users = {_onlineUsers.get(1), _onlineUsers.get(2),    _onlineUsers.get(3), _onlineUsers.get(4)};
     AlertDialog.Builder onlineUser = new AlertDialog.Builder(this);
     onlineUser.setTitle("Online Users");
     onlineUser.setItems(users, new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            System.out.println("User clicked!");

        }
    });
     onlineUser.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();

        }
    });
     onlineUser.show();
 }

さらに、多分ループのために、アラートボックスに追加するより効率的な方法はありますか? 申し訳ありませんが、配列に関する知識が不足しているため、うまくいきません。

どんな助けでも素晴らしいでしょう!ありがとうございました!

編集:この方法でコードを設定した場合:

 String user1 = _onlineUsers.get(1);
     String user2 = _onlineUsers.get(0);

     CharSequence[] users = {user1, user2};

それは完全に機能しますが、より効率的な方法を見つけたいですか?

4

2 に答える 2

3

次のようなことができます。

String[] usersの代わりに取るCharSequence[] users

そして以下のようにします:

users = new String[_onlineUsers.size()];
System.out.println("Total Item is: "+_onlineUsers.size());
users = _onlineUsers.toArray(users);
System.out.println("USERS :"+_onlineUsers.toArray(users));

ArrayList<String> _onlineUsersそれはあなたの全体を に変換しますString[] users

それがあなたを助けることを願っています。

問題が解決しない場合は、自由に質問してください。

于 2012-04-07T06:52:16.223 に答える
0

あなたのコードは正しく、バグはありません。確認する必要があると思います -

CharSequence[] users = {_onlineUsers.get(1), _onlineUsers.get(2),    _onlineUsers.get(3), _onlineUsers.get(4)};

そこから文字列を取得できるかどうかを確認します。

于 2012-04-07T06:59:20.510 に答える