Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未知NullPointerException_Android - Fatal编程技术网

Android 未知NullPointerException

Android 未知NullPointerException,android,Android,嘿 我没有发现错误。 错误应该出现在btlogin.setOnClickListener 登录类 package android.skiptvad; public class Login extends Activity{ ProgressDialog pd = null; //final SharedPreferences settings = getSharedPreferences("pref", 0); @Override protected void onCreate(Bun

我没有发现错误。 错误应该出现在
btlogin.setOnClickListener

登录类

package android.skiptvad;

public class Login extends Activity{
 ProgressDialog pd = null;
 //final SharedPreferences settings = getSharedPreferences("pref", 0);
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.login);
  final SharedPreferences settings = getSharedPreferences("pref", 0);
  final EditText user = (EditText)findViewById(R.id.login_etuser);
  final EditText pw = (EditText)findViewById(R.id.login_etpw);
  Button btlogin = (Button)findViewById(R.id.login_btlog);
  Button btnew = (Button)findViewById(R.id.login_btnew);
  final CheckBox cb = (CheckBox)findViewById(R.id.login_cb);

  if (settings.getString("user", "") != "")
  {
   user.setText(settings.getString("user", ""));
   pw.setText(settings.getString("pw", ""));
  }



  btlogin.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {

    if (!user.getText().toString().equals("") && !pw.getText().toString().equals(""))
    {
     pd.setCancelable(true);
     pd = ProgressDialog.show(Login.this,"","Loading. Please wait...", true);
     List<NameValuePair> params = new ArrayList<NameValuePair>();
                   params.add(new BasicNameValuePair("username", user.getText().toString()));
                   params.add(new BasicNameValuePair("password", pw.getText().toString()));
                   Handler handler = new Handler(){
                   @Override
                   public void handleMessage(Message msg) {
                    pd.cancel();
                      if (msg.obj.toString()!= null)
                      {
                     JSONParse json = null;
                     try {
        json = new JSONParse(msg.obj.toString());
      } catch (JSONException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      String session = json.getsessionid();
      SharedPreferences.Editor editor = settings.edit();
                       editor.putString("session_id", session);
                       editor.commit();
                       finish();

                      }
                      else
                      {

                       runOnUiThread(new  Runnable() {
       public void run() {
        Toast toast ;
                toast =  Toast.makeText(getApplicationContext(), "error", 500);
            toast.show();
       }
      });
                      }
                   }
                   };
     HttpConnection con = new HttpConnection(params, "http://surfkid.redio.de/login", handler);
     Log.e("xxxcon", "ok");
     con.start();
    }
    if (cb.isChecked())
    {
   SharedPreferences.Editor editor = settings.edit();
                         editor.putString("user", user.getText().toString());
                         editor.putString("pw", pw.getText().toString());
                         editor.commit();
    }

   }
  });
  btnew.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
     startActivityForResult(new Intent(Login.this, NewAccount.class), 1);

   }
  });
 }


}

我认为当你试图将“pd”设置为可取消时,它是空的。。。看起来直到下一行你才创建它

 pd.setCancelable(true);
 pd = ProgressDialog.show(Login.this,"","Loading. Please wait...", true);

我认为@Matt可能是对的。删除行
pd.setCancelable(true)并将下一行替换为:

pd = ProgressDialog.show(Login.this,"","Loading. Please wait...", true, true);

这使用了一个接受
布尔可取消
作为输入的方法。下面是

请在onclcik事件的不同时间间隔使用log语句,这样您就可以获得代码获取异常的准确行
pd = ProgressDialog.show(Login.this,"","Loading. Please wait...", true, true);