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