显示java.lang.NullPointerException:机器人产生的原因 [英] Android Caused by: java.lang.NullPointerException

查看:490
本文介绍了显示java.lang.NullPointerException:机器人产生的原因的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编辑现在...我检查的布局和初始化,但仍然是相同的error..is它也许月食错误?

 公共类ActivityOwner扩展活动实现OnClickListener {

        的EditText ownerUser,ownerPass;
        私人按钮btnLogin;
        私人ProgressDialog pDialog;
        JSONParser jsonParser =新JSONParser();

        私有静态最后弦乐OWNER_LOGIN_URL =htt​​p://192.168.2.5/idot/owner_login.php;

        // --- JSON元素的PHP脚本的响应IDS
        私有静态最后弦乐TAG_SUCCESS =成功;
        私有静态最后弦乐TAG_MESSAGE =消息;

        @覆盖
        保护无效的onCreate(包savedInstanceState){
            super.onCreate(savedInstanceState);
            的setContentView(R.layout.activity_owner);

            ownerUser =(EditText上)findViewById(R.id.owner_login_username);
            ownerPass =(EditText上)findViewById(R.id.owner_login_password);

            TextView的tvLinkToRegister =(TextView中)findViewById(R.id.link_to_register);
            tvLinkToRegister.setOnClickListener(新View.OnClickListener(){

                @覆盖
                公共无效的onClick(视图查看){
                    // TODO自动生成方法存根
                    意图registrationForm =新的意图(ActivityOwner.this,
                            ActivityOwnerRegister.class);
                    startActivity(registrationForm);
                }
            });

            btnLogin =(按钮)findViewById(R.id.btnOwnerLogin);
            btnLogin.setOnClickListener(本);
        }

        @覆盖
        公共无效的onClick(视图v){
            新AttemptLogin()执行()。
        }

        类AttemptLogin扩展的AsyncTask<字符串,字符串,字符串> {

            @覆盖
            在preExecute保护无效(){
                super.on preExecute();
                pDialog =新ProgressDialog(ActivityOwner.this);
                pDialog.setMessage(试图登录......);
                pDialog.setIndeterminate(假);
                pDialog.setCancelable(真正的);
                pDialog.show();
            }

            @覆盖
            保护字符串doInBackground(字符串参数... args){

                //检查成功标签
                诠释成功;
                字符串username = ownerUser.getText()的toString()。
                。字符串password = ownerPass.getText()的toString();

                尝试 {
                    //大厦参数
                    名单<的NameValuePair> PARAMS =新的ArrayList<的NameValuePair>();
                    params.add(新BasicNameValuePair(owner_username,用户名));
                    params.add(新BasicNameValuePair(owner_password,密码));

                    Log.d(!要求,出发);
                    //获取产品的详细信息通过HTTP请求
                    JSONObject的JSON = jsonParser.makeHtt prequest(OWNER_LOGIN_URL,
                            POST,则params);

                    //检查你的日志,JSON响应
                    Log.d(登录尝试,json.toString());

                    // json的成功标签
                    成功= json.getInt(TAG_SUCCESS);
                    如果(成功== 1){
                        Log.d(登录成功!,json.toString());
                        //保存用户数据
                        共享preferences SP = preferenceManager
                                .getDefaultShared preferences(ActivityOwner.this);
                        编辑器编辑= sp.edit();
                        edit.putString(owner_username,用户名);
                        edit.commit();

                        意图I =新的意图(ActivityOwner.this,
                                ActivityOwnerSuccessLogin.class);
                        pDialog.dismiss();
                        完();
                        startActivity(ⅰ);

                        返回json.getString(TAG_MESSAGE);
                    } 其他 {
                        Log.d(登录失败!,json.getString(TAG_MESSAGE));
                        返回json.getString(TAG_MESSAGE);
                    }
                }赶上(JSONException E){
                    e.printStackTrace();
                }
                返回null;
            }

            @覆盖
            保护无效onPostExecute(字符串结果){
                //关闭该对话框,一旦产品中删除
                pDialog.dismiss();
                如果(结果!= NULL){
                    Toast.makeText(ActivityOwner.this,结果,Toast.LENGTH_SHORT)
                            。显示();
                }
            }

        }
    }
 

------ logcat的-------

  11-14 21:30:52.517:E / AndroidRuntime(18929):由:显示java.lang.NullPointerException
11-14 21:30:52.517:E / AndroidRuntime(18929):在ph.idot.owner.ActivityOwner $ AttemptLogin.doInBackground(ActivityOwner.java:88)
 

解决方案

在一行的形式ABC的空指针异常是指东西点的左侧为空。在这个例子中:

  • 在任一A为null;
  • 或A·B为空。

不能有任何其他原因。因此,作为textView.getText()永远不会返回null,唯一的可能性就是用户为空。

I Edited it now...I'm check the layout and the initialization but still the same error..is it maybe eclipse error?

public class ActivityOwner extends Activity implements OnClickListener {

        EditText ownerUser, ownerPass;
        private Button btnLogin;
        private ProgressDialog pDialog;
        JSONParser jsonParser = new JSONParser();

        private static final String OWNER_LOGIN_URL = "http://192.168.2.5/idot/owner_login.php";

        // ---JSON element ids from response of php script
        private static final String TAG_SUCCESS = "success";
        private static final String TAG_MESSAGE = "message";

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_owner);

            ownerUser = (EditText) findViewById(R.id.owner_login_username);
            ownerPass = (EditText) findViewById(R.id.owner_login_password);

            TextView tvLinkToRegister = (TextView) findViewById(R.id.link_to_register);
            tvLinkToRegister.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    // TODO Auto-generated method stub
                    Intent registrationForm = new Intent(ActivityOwner.this,
                            ActivityOwnerRegister.class);
                    startActivity(registrationForm);
                }
            });

            btnLogin = (Button) findViewById(R.id.btnOwnerLogin);
            btnLogin.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            new AttemptLogin().execute();
        }

        class AttemptLogin extends AsyncTask<String, String, String> {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                pDialog = new ProgressDialog(ActivityOwner.this);
                pDialog.setMessage("Attempting login...");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(true);
                pDialog.show();
            }

            @Override
            protected String doInBackground(String... args) {

                // Check for success tag
                int success;
                String username = ownerUser.getText().toString();
                String password = ownerPass.getText().toString();

                try {
                    // Building Parameters
                    List<NameValuePair> params = new ArrayList<NameValuePair>();
                    params.add(new BasicNameValuePair("owner_username", username));
                    params.add(new BasicNameValuePair("owner_password", password));

                    Log.d("request!", "starting");
                    // getting product details by making HTTP request
                    JSONObject json = jsonParser.makeHttpRequest(OWNER_LOGIN_URL,
                            "POST", params);

                    // check your log for json response
                    Log.d("Login attempt", json.toString());

                    // json success tag
                    success = json.getInt(TAG_SUCCESS);
                    if (success == 1) {
                        Log.d("Login Successful!", json.toString());
                        // save user data
                        SharedPreferences sp = PreferenceManager
                                .getDefaultSharedPreferences(ActivityOwner.this);
                        Editor edit = sp.edit();
                        edit.putString("owner_username", username);
                        edit.commit();

                        Intent i = new Intent(ActivityOwner.this,
                                ActivityOwnerSuccessLogin.class);
                        pDialog.dismiss();
                        finish();
                        startActivity(i);

                        return json.getString(TAG_MESSAGE);
                    } else {
                        Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                        return json.getString(TAG_MESSAGE);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(String result) {
                // dismiss the dialog once product deleted
                pDialog.dismiss();
                if (result != null) {
                    Toast.makeText(ActivityOwner.this, result, Toast.LENGTH_SHORT)
                            .show();
                }
            }

        }
    }

------LOGCAT-------

11-14 21:30:52.517: E/AndroidRuntime(18929): Caused by: java.lang.NullPointerException
11-14 21:30:52.517: E/AndroidRuntime(18929):    at ph.idot.owner.ActivityOwner$AttemptLogin.doInBackground(ActivityOwner.java:88)

解决方案

A null pointer exception on a line of the form A.B.C means that something on the left-hand side of a dot is null. In this example :

  • either A is null;
  • or A.B is null.

There can be no other reason. So, as textView.getText() never returns null, the only possibility is that user is null.

这篇关于显示java.lang.NullPointerException:机器人产生的原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆