簡體   English   中英

ListView在片段中崩潰-onClick方法

[英]ListView crashing in fragment - onClick Method

出於某種原因,當我嘗試將這個listView片段化時,我的應用程序崩潰會遇到麻​​煩。 我已經看到了一些關於需要使用某些東西而不是視圖的事情,因為尚未創建視圖。 有沒有一種方法可以重組此代碼或進行某些更改使其有效? 這是代碼。 抱歉,我是Android用戶。 當我嘗試單擊發送按鈕時,代碼崩潰了,因此我假設onClick方法中的某個位置。

package com.quickCollab.project;

import java.util.ArrayList;

import com.quickCollab.project.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
public class Chat extends Fragment {

private String message;
private EditText messageField;
private ListView mainListView;
private ArrayAdapter<String> listAdapter;
private ArrayList<String> chatList = new ArrayList<String>();
private View chat;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    chat = inflater.inflate(R.layout.chat_frag, container, false);
    chatList.add("Welcome");
    Button send = (Button) chat.findViewById(R.id.send);
    messageField = (EditText) chat.findViewById(R.id.username);
    mainListView = (ListView) chat.findViewById(R.id.mainListView);

    listAdapter = new ArrayAdapter<String>(getActivity(),
            R.layout.simplerow, chatList);

    mainListView.setAdapter(listAdapter);

    send.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            System.out.println("Got this far");
            message = messageField.getText().toString();
            chatList.add(message);


            send();
            System.out.println(chatList.toString());
            /*
            if (message.length() > 0) {
                listAdapter.add(message);
                listAdapter.notifyDataSetChanged();
            } else {
                message = "";
                listAdapter.add(message);
                listAdapter.notifyDataSetChanged();
            }*/

        };

    });

    return chat;
}

public void send() {        
    listAdapter.notifyDataSetChanged();
}

}

有人要求發出logcat錯誤。 感謝你的幫助!

12-08 22:45:11.456: I/Adreno-EGL(29631): <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build:  ()
12-08 22:45:11.456: I/Adreno-EGL(29631): OpenGL ES Shader Compiler Version: E031.24.00.08+13
12-08 22:45:11.456: I/Adreno-EGL(29631): Build Date: 03/28/14 Fri
12-08 22:45:11.456: I/Adreno-EGL(29631): Local Branch: 0328_AU200_patches
12-08 22:45:11.456: I/Adreno-EGL(29631): Remote Branch: 
12-08 22:45:11.456: I/Adreno-EGL(29631): Local Patches: 
12-08 22:45:11.456: I/Adreno-EGL(29631): Reconstruct Branch: 
12-08 22:45:11.486: D/OpenGLRenderer(29631): Enabling debug mode 0
12-08 22:45:11.506: D/(29631): DFactory start
12-08 22:45:11.506: D/(29631): This is decoding
12-08 22:45:11.506: D/(29631): onDecode : stream read 54 bytes, ptr = 0x72d8bef0
12-08 22:45:11.506: D/(29631): onDecode : QmageDecParseHeader call : QM
12-08 22:45:11.506: D/(29631): Qmage parsing for decoding ok
12-08 22:45:11.506: D/(29631): onDecode : QmageHeader Height() 96 Width() : 96 sampleSize : 1
12-08 22:45:11.506: D/(29631): Qmage Make Color table[2]
12-08 22:45:11.506: D/(29631): Qmage Mae Color table end
12-08 22:45:11.506: D/(29631): 1 to 1 Index mode decoding
12-08 22:45:11.506: D/(29631): 1 to 1 Index mode decoding end
12-08 22:45:11.506: D/(29631): onDecode : return true
12-08 22:45:12.016: W/IInputConnectionWrapper(29631): showStatusIcon on inactive InputConnection

private ArrayList<String> chatList;

您使用chatList填充了列表視圖,但未使用任何值初始化該chatList

listAdapter = new ArrayAdapter<String>(getActivity(), R.layout.simplerow, chatList);

因此,在創建listAdapter ,它將返回NullPointerException ,請實例化chatList並使用任何值進行迭代,然后重試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM