0
我有shecks如果用户已登录到该服务的主要活动。如果没有用户登录,它会打开一个新的活动:无法调用finish()从静态处理
if (userName == null) {
Intent myIntent = new Intent(MainActivity.this, Login.class);
MainActivity.this.startActivity(myIntent);
}
此活动对用户名和密码,登录按钮领域。用户填写信息后点击登录。我做网络都在一个新的线程:
new Thread(new Runnable() {
public void run() {
try {
Auth myAuth = new Auth(getApplicationContext());
Boolean isAuth = false;
isAuth=myAuth.getAuthToken(tUserName.getText().toString(), tPassword.getText().toString());
Bundle b = new Bundle();
b.putBoolean("isAuth", isAuth);
Message msg = new Message();
msg.setData(b);
loginHandler.dispatchMessage(msg);
}
catch (InterruptedException ex) { ex.printStackTrace(); }
catch (Exception ex) { ex.printStackTrace();}
finally { } }
}).start();
此发布消息回处理程序:
private static Handler loginHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
mProgress.setVisibility(View.GONE);
if(msg.getData().getBoolean("isAuth")){
// UNABLE TO CALL FINISH
}
else
{
CharSequence msg2 = "Login Failed";
Toast.makeText(context, msg2, Toast.LENGTH_SHORT).show();
}
}
};
我想自动关闭登录活动如果isAuth是真实的。
我对implemeting登录屏幕可能走错路的计划。只是让我知道,我会研究你建议的另一种方式。
不知道这是否是正确的方式来做到这一点,但在这里。我修改了线程中运行的代码以调用finish()。它似乎工作正常。 – techiegoob 2012-08-07 20:35:48
isAuth = myAuth.getAuthToken(tUserName.getText()。toString(),tPassword.getText()。toString()); \t \t \t \t \t如果(isAuth){ \t \t \t \t \t \t光洁度(); \t \t \t \t \t} \t \t \t \t \t否则{ \t \t \t \t \t \t捆B =新软件包(); \t \t \t \t \t \t b.putBoolean(“isAuth”,isAuth); \t \t \t \t \t \t消息msg = new Message(); \t \t \t \t \t \t msg.setData(b); \t \t \t \t \t \t loginHandler.dispatchMessage(msg); \t \t \t \t \t} – techiegoob 2012-08-07 20:37:04