繁体   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