如何解决空对象引用

时间:2016-05-16 09:54:58

标签: android

这是我的代码,问题出现了。

public void onClick(View arg0) {
    switch (arg0.getId()){
        case R.id.login:
            String nama = user.getText().toString();
            String sandi = pass.getText().toString();
            new AttemptLogin().execute(nama,sandi);
            break;
 }

然后这是我在AttemptLogin()

上的代码
class AttemptLogin extends AsyncTask<String,String,String>{
    boolean failure = false;
protected String doInBackground(String... args) {
        int success;
        String username = args[0] ;
        String password = args[1];
        try {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("username",username));
            params.add(new BasicNameValuePair("password",password));
             ...etc
            }

这是LogCat,

LogCat : null object reference

所以,我想从onClick()获取String,并将值传递给attemptLogin()上的doInBackground()。有什么解决方案? 对不起,这是新手的问题,请帮助我们 非常感谢您的关注:)

2 个答案:

答案 0 :(得分:1)

查看您的错误,问题似乎出现在:

String nama = user.getText().toString();
String sandi = pass.getText().toString();

此时您的对象“user”或“pass”为NULL, 请检查你的oncreate方法

如果你在活动中那么

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        .....
        .....
        EditText user= (EditText) findViewById(R.id.**XXXXXXX**); //error here 
        EditText pass= (EditText) findViewById(R.id.**YYYYYYY**); //error here 
        .....
        .....

}

否则,如果你在Fragment

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

        View view = inflater.inflate(R.layout.fragment_one, container, false);


             .....
        .....
        EditText user= (EditText)view. findViewById(R.id.**XXXXXXX**); //error here 
        EditText pass= (EditText)view. findViewById(R.id.**YYYYYYY**); //error here 
        .....
        .....

        return view;

    }

答案 1 :(得分:0)

  1. 检查null条件,如果条件
  2. ,则将用户名和密码置于其上
  3. if(user!= null){ String nama = user.getText()。toString();
  4. }