사용자가 서비스에 로그인했을 때 주저하는 활동이 있습니다. 로그인 한 사용자가 없으면 새로운 활동이 열립니다.static 핸들러에서 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에 해당하는 경우 자동 로그인 활동을 닫으려면합니다.
로그인 화면을 구현하려는 계획이 잘못되었을 수 있습니다. 너를 권유하는 또 다른 방법을 들여다 볼 것이다.
이것이 올바른 방법인지는 확실하지 않지만 여기에 나와 있습니다. 스레드에서 실행되는 코드를 수정하여 finish()를 호출했습니다. 잘 작동하는 것 같습니다. – techiegoob
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