Android 片段NullPointerException

Android 片段NullPointerException,android,android-fragments,Android,Android Fragments,我是android新手,我尝试将一个活动转换为一个片段。 日志是这样写的: 04-12 04:28:02.287 7052-7052/de.gigadroid.random E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: de.gigadroid.random, PID: 7052 java.lang.NullPointerException at de.gigadroid.random.MessagingFragment$

我是android新手,我尝试将一个活动转换为一个片段。 日志是这样写的:

04-12 04:28:02.287    7052-7052/de.gigadroid.random E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: de.gigadroid.random, PID: 7052
java.lang.NullPointerException
        at de.gigadroid.random.MessagingFragment$1.onClick(MessagingFragment.java:107)
        at android.view.View.performClick(View.java:4438)
        at android.view.View$PerformClick.run(View.java:18422)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)
这就是代码当前的样子:

public class MessagingFragment extends Fragment{
private static final int MESSAGE_CANNOT_BE_SENT = 0;
public String username;
private EditText messageText;
private ListView messageHistoryText;
private ImageButton sendMessageButton;
private IAppManager imService;
private FriendInfo friend = new FriendInfo();
private LocalStorageHandler localstoragehandler;
private Cursor dbCursor;
private Handler handler = new Handler();
public ArrayAdapter<String> msgListleft;
public ArrayAdapter<String> msgListright;
ArrayList<Message> messages;
Adapter adapter;
static Random rand = new Random();
static String sender;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.messaging_screen, container, false);
    return rootView;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    messageHistoryText = (ListView) view.findViewById(R.id.messageHistory);
    messageText = (EditText) view.findViewById(R.id.message);

    messageHistoryText.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);


    messageText.requestFocus();
    messageHistoryText.setAdapter(adapter);
    sendMessageButton = (ImageButton) view.findViewById(R.id.sendMessageButton);
    sendMessageButton.setOnClickListener(new View.OnClickListener() {
        CharSequence message;
        Handler handler = new Handler();

        public void onClick(View arg0) {
            message = messageText.getText();
            if (message.length() > 0) {
                appendToMessageHistory(imService.getUsername(), message.toString());
                localstoragehandler.insert(imService.getUsername(), friend.userName, message.toString());

                messageText.setText("");
                Thread thread = new Thread() {
                    public void run() {
                        try {
                            if (imService.sendMessage(imService.getUsername(), friend.userName, message.toString()) == null) {

                                handler.post(new Runnable() {

                                    public void run() {

                                        Toast.makeText(getActivity(), R.string.message_cannot_be_sent, Toast.LENGTH_LONG).show();


                                        //showDialog(MESSAGE_CANNOT_BE_SENT);
                                    }

                                });
                            }
                        } catch (UnsupportedEncodingException e) {
                            Toast.makeText(getActivity(), R.string.message_cannot_be_sent, Toast.LENGTH_LONG).show();

                            e.printStackTrace();
                        }
                    }
                };
                thread.start();

            }

        }
    });
    messageText.setOnKeyListener(new View.OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == 66) {
                sendMessageButton.performClick();
                return true;
            }
            return false;
        }


    });
}




@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);




    final ArrayAdapter<String> msgListleft = new ArrayAdapter<String>(this.getActivity(), R.layout.sms_row);
    final ArrayAdapter<String> msgListright = new ArrayAdapter<String>(this.getActivity(), R.layout.sms_row);
   ;
    Bundle extras = this.getArguments();

    friend.userName = extras.getString(FriendInfo.USERNAME);
    friend.ip = extras.getString(FriendInfo.IP);
    friend.port = extras.getString(FriendInfo.PORT);
    String msg = extras.getString(MessageInfo.MESSAGETEXT);
    messages = new ArrayList<Message>();
    adapter = new Adapter(this.getActivity(), messages);


    //  EditText friendUserName = (EditText) findViewById(R.id.friendUserName);
    //  friendUserName.setText(friend.userName);


    localstoragehandler = new LocalStorageHandler(this.getActivity());
    dbCursor = localstoragehandler.get(friend.userName, IMService.USERNAME);

    if (dbCursor.getCount() > 0) {
        int noOfScorer = 0;
        dbCursor.moveToFirst();
        while ((!dbCursor.isAfterLast()) && noOfScorer < dbCursor.getCount()) {
            noOfScorer++;

            this.appendToMessageHistory(dbCursor.getString(2), dbCursor.getString(3));
            dbCursor.moveToNext();
        }
    }
    localstoragehandler.close();

    if (msg != null) {
        this.appendToMessageHistory(friend.userName, msg);
        ((NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE)).cancel((friend.userName + msg).hashCode());
    }





}


protected Dialog onCreateDialog(int id) {
    int message = -1;
    switch (id) {
        case MESSAGE_CANNOT_BE_SENT:
            message = R.string.message_cannot_be_sent;
            break;
    }

    if (message == -1) {
        return null;
    } else {
        return new AlertDialog.Builder(MessagingFragment.this.getActivity())
                .setMessage(message)
                .setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                /* User clicked OK so do some stuff */
                    }
                })
                .create();
    }
}




public class MessageReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extra = intent.getExtras();
        String username = extra.getString(MessageInfo.USERID);
        String message = extra.getString(MessageInfo.MESSAGETEXT);

        if (username != null && message != null) {
            if (friend.userName.equals(username)) {
                appendToMessageHistory(username, message);
                localstoragehandler.insert(username, imService.getUsername(), message);

            } else {
                if (message.length() > 15) {
                    message = message.substring(0, 15);
                }

            }
        }
    }

}

;
private MessageReceiver messageReceiver = new MessageReceiver();

public void appendToMessageHistory(final String username, String message) {
    if (username != null && message != null) {

        final String mssg = message;
        handler.post(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                if (friend.userName.equals(username)) {
                    messages.add(new Message(mssg , false));

                    messageHistoryText.setAdapter(adapter);

                } else {
                    messages.add(new Message(mssg, true));
                    messageHistoryText.setAdapter(adapter);

                }

            }
        });
    }
}


@Override
public void onDestroy() {
    super.onDestroy();
    if (localstoragehandler != null) {
        localstoragehandler.close();
    }
    if (dbCursor != null) {
        dbCursor.close();
    }
}}
公共类MessagingFragment扩展了片段{
私有静态最终整型消息\u无法\u发送=0;
公共字符串用户名;
私有编辑文本消息文本;
私有ListView消息历史文本;
私有ImageButton sendMessageButton;
私人IAppManager imService;
private FriendInfo friend=新建FriendInfo();
私有LocalStorageHandler LocalStorageHandler;
私有游标dbCursor;
私有处理程序=新处理程序();
公共阵列适配msgListleft;
公共阵列适配msgListright;
ArrayList消息;
适配器;
静态随机兰德=新随机();
静态字符串发送器;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.messaging\u屏幕,容器,错误);
返回rootView;
}
@凌驾
已创建视图上的公共void(视图,捆绑保存状态){
super.onViewCreated(视图,savedInstanceState);
messageHistoryText=(ListView)view.findViewById(R.id.messageHistory);
messageText=(EditText)view.findViewById(R.id.message);
messageHistoryText.setTranscriptMode(ListView.TRANSCRIPT\u MODE\u ALWAYS\u SCROLL);
messageText.requestFocus();
messageHistoryText.setAdapter(适配器);
sendMessageButton=(ImageButton)view.findViewById(R.id.sendMessageButton);
sendMessageButton.setOnClickListener(新视图.OnClickListener(){
字符序列信息;
Handler=newhandler();
公共void onClick(视图arg0){
message=messageText.getText();
if(message.length()>0){
appendToMessageHistory(imService.getUsername(),message.toString());
localstoragehandler.insert(imService.getUsername()、friend.userName、message.toString());
messageText.setText(“”);
线程线程=新线程(){
公开募捐{
试一试{
if(imService.sendMessage(imService.getUsername()、friend.userName、message.toString())==null){
handler.post(新的Runnable(){
公开募捐{
Toast.makeText(getActivity(),R.string.message_无法发送,Toast.LENGTH_LONG).show();
//showDialog(无法发送消息);
}
});
}
}捕获(不支持的编码异常e){
Toast.makeText(getActivity(),R.string.message_无法发送,Toast.LENGTH_LONG).show();
e、 printStackTrace();
}
}
};
thread.start();
}
}
});
messageText.setOnKeyListener(新视图.OnKeyListener(){
公共布尔onKey(视图v、int keyCode、KeyEvent事件){
如果(键代码==66){
sendMessageButton.performClick();
返回true;
}
返回false;
}
});
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
final ArrayAdapter msgListleft=新的ArrayAdapter(this.getActivity(),R.layout.sms_行);
final ArrayAdapter msgListright=新的ArrayAdapter(this.getActivity(),R.layout.sms_行);
;
Bundle extras=this.getArguments();
friend.userName=extras.getString(FriendInfo.userName);
friend.ip=extras.getString(FriendInfo.ip);
friend.port=extras.getString(FriendInfo.port);
String msg=extras.getString(MessageInfo.MESSAGETEXT);
messages=newarraylist();
适配器=新适配器(this.getActivity(),消息);
//EditText-friendUserName=(EditText)findViewById(R.id.friendUserName);
//friendUserName.setText(friend.userName);
localstoragehandler=新的localstoragehandler(this.getActivity());
dbCursor=localstoragehandler.get(friend.userName,IMService.userName);
if(dbCursor.getCount()>0){
int noOfScorer=0;
dbCursor.moveToFirst();
而((!dbCursor.isAfterLast())和&noOfScorer