0

我现在编辑它...我正在检查布局和初始化但仍然是相同的错误..可能是 Eclipse 错误?

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)
4

4 回答 4

7

ABC 形式的行上的空指针异常意味着点左侧的某些内容为空。在这个例子中:

  • A 为空;
  • 或 AB 为空。

不可能有其他原因。因此,由于 textView.getText() 永远不会返回 null,唯一的可能就是usernull。

于 2013-11-14T12:42:48.943 回答
1

我也面临同样的问题,但这是个好消息:)我的问题已经解决了。

我的问题是在 Button01 的 void OnCreate 下。

在我的活动中

<Button
    android:id="@+id/button01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:enabled="false"/>

在我的代码中

Button btnYes;

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

    btnYes = (Button) findViewById(R.id.button01);

    try{
            btnYes.setEnabled(true);

    }
    catch(Exception ex){

    }
}

我的观察

在 onCreate 期间;可能仍需创建的代码搜索按钮。使用 try 将处理这个空异常。

如果您在使用 TextView、EditText 等其他控件时遇到同样的问题,那么您可以将它们放在“try”中。

希望,它也会帮助并解决您的问题。

如果解决了然后享受.......:):):)

于 2014-10-31T13:54:25.520 回答
1

根据提供有关您的问题的信息,我假设您的EditText用户未完美初始化。请检查一下。

于 2013-11-14T12:42:06.780 回答
0

我遇到了这个问题,就视图而言,我为解决它付出了很多努力,不要为您的视图提供与视图的 id 相似的变量名称。说

       Button btnA,btnB;
       @Override
       public void onCreate(Bundle savedInstanceState){
       ...............
        ..............
       //DO NOT USE button1 = (Button)findViewById(R.id.button1) ;
       //use 
       btnA = (Button)findViewById(R.id.button1) ;
于 2014-07-13T22:37:55.983 回答