Caused by: java.lang.NullPointerException

问题截图:




代码:

 
public class ChatActivity extends BaseActivity implements OnClickListener {
	
	public static final String COPY_IMAGE = "EASEMOBIMG";
	public static final int REQUEST_CODE_COPY_AND_PASTE = 11;
	
	private ImageView micImage;
	private Drawable[] micImages;
	private View more;
	private LinearLayout expressionContainer;
	private LinearLayout btnContainer;
	
	// 给谁发送消息

	
	private ImageView iv_emoticons_normal;
	private ImageView iv_emoticons_checked;
	private RelativeLayout edittext_layout;
	private Button btnMore;
	private ListView listView;
	private InputMethodManager manager;
	
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}
	
	/**
	 * initView
	 */
	protected void initView() {
		micImage = (ImageView) findViewById(R.id.mic_image);
		more = findViewById(R.id.more);
		listView = (ListView) findViewById(R.id.list);
		btnContainer = (LinearLayout) findViewById(R.id.ll_btn_container);
		expressionContainer = (LinearLayout) findViewById(R.id.ll_face_container);
		
	}
				@Override
				public void onClick(View v) {
					edittext_layout.setBackgroundResource(R.drawable.input_bar_bg_active);
					more.setVisibility(View.GONE);
					iv_emoticons_normal.setVisibility(View.VISIBLE);
					iv_emoticons_checked.setVisibility(View.INVISIBLE);
					expressionContainer.setVisibility(View.GONE);
					btnContainer.setVisibility(View.GONE);
					
				}
	
	private void setUpView() {
	
	manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
	listView.setOnTouchListener(new OnTouchListener() {

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			hideKeyboard();
			more.setVisibility(View.GONE);
			iv_emoticons_normal.setVisibility(View.VISIBLE);
			iv_emoticons_checked.setVisibility(View.INVISIBLE);
			expressionContainer.setVisibility(View.GONE);
			btnContainer.setVisibility(View.GONE);
			return false;
		}
	
	});
	}
	
	/**
	 * 显示或隐藏图标按钮页
	 * 
	 * @param view
	 */
	public void more(View view) {
		if (more.getVisibility() == View.GONE) {
			System.out.println("more gone");
			hideKeyboard();
			more.setVisibility(View.VISIBLE);
			btnContainer.setVisibility(View.VISIBLE);
			expressionContainer.setVisibility(View.GONE);
		} else {
			if (expressionContainer.getVisibility() == View.VISIBLE) {
				expressionContainer.setVisibility(View.GONE);
				btnContainer.setVisibility(View.VISIBLE);
				iv_emoticons_normal.setVisibility(View.VISIBLE);
				iv_emoticons_checked.setVisibility(View.INVISIBLE);
			} else {
				more.setVisibility(View.GONE);
			}

		}

	}

	/**
	 * 点击文字输入框
	 * 
	 * @param v
	 */
	public void editClick(View v) {
		listView.setSelection(listView.getCount() - 1);
		if (more.getVisibility() == View.VISIBLE) {
			more.setVisibility(View.GONE);
			iv_emoticons_normal.setVisibility(View.VISIBLE);
			iv_emoticons_checked.setVisibility(View.INVISIBLE);
		}

	}
	
	
	public List<String> getExpressionRes(int getSum) {
		List<String> reslist = new ArrayList<String>();
		for (int x = 1; x <= getSum; x++) {
			String filename = "ee_" + x;

			reslist.add(filename);

		}
		return reslist;

	}
	
	/**
	 * 隐藏软键盘
	 */
	private void hideKeyboard() {
		if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {
			if (getCurrentFocus() != null)
		manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
		}
	}
	}
  

解决问题的过程:

在hideKeyboard那边加了断点调试了一下,发现manager的值是null的, 然后就查看manager所在的代码处,

是在这里:

private void setUpView() {
     
    manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    listView.setOnTouchListener(new OnTouchListener() {


感觉这里没问题,然后就查看setUpView() 这个方法什么时候调用过? 发现原来是在OnCreate里缺少了.


然后加在onCreate那里就解决问题了: 

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        setUpView();
    }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值