簡體   English   中英

如何將布爾值傳遞給Android Studio中的onPostExecute方法?

[英]How to pass boolean value into onPostExecute method in Android Studio ?

我有兩個分開的文件,分別是Login.javaLoginTask.java

我的問題是我試圖將布爾值“ checkFlag”傳遞給onPostExecute方法

但是布爾值始終為null 代碼如下:

Login.java

public class Login extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{
    EditText etUsername, etPassword;
    String login_name, login_pass;
    CheckBox cbRemember;
    public static final String ID="ID";
    Boolean checkFlag;
    SharedPreferences pref;
    SharedPreferences.Editor editor;
    final String TAG = this.getClass().getName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        etUsername  =(EditText)findViewById(R.id.etUsername);
        etPassword  =(EditText)findViewById(R.id.etPassword);
        cbRemember  = (CheckBox)findViewById(R.id.cbRemember);
        cbRemember.setOnCheckedChangeListener(this);
        checkFlag   = cbRemember.isChecked();
        Log.d(TAG, "Check flag is : " + checkFlag);

        pref        = getSharedPreferences("login.conf", Context.MODE_PRIVATE);
        editor      = pref.edit();
    }
    public void userLogin (View view){
        login_name          = etUsername.getText().toString();
        login_pass          = etPassword.getText().toString();
        checkFlag           = cbRemember.isChecked();
        String login_url    = getString(R.string.login);
        String method       = "login";
        LoginTask loginTask = new LoginTask(this);
        loginTask.execute(method,login_url,login_name, login_pass, String.valueOf(checkFlag));
        Toast.makeText(getApplicationContext(), "Check flag value = " + checkFlag, Toast.LENGTH_SHORT).show();
        finish();
    }
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        checkFlag = isChecked;
        Log.d(TAG, "Check flag is : " + checkFlag);
    }
}

LoginTask.java

public class LoginTask extends AsyncTask<String,Void,String>{
    public static final String NAME="NAME";
    public static final String ID="ID";
    private PrefManager pref;
    Context ctx;
    LoginTask(Context ctx){this.ctx=ctx;}
    @Override
    protected void onPreExecute(){super.onPreExecute();}
    @Override
    protected String doInBackground(String... params){}
    @Override
    protected void onProgressUpdate (Void... values){super.onProgressUpdate(values);}

    // I want to pass checkFlag boolean value into this method 
    @Override
    protected void onPostExecute (String result){
        String fail         = "Try Again";
        String login_name   = result.trim(); // display "try again" error
        String welcome      = "Welcome to E-Movement";
        pref                = new PrefManager(ctx);
        if(result.trim().equalsIgnoreCase(fail.trim())){
            pref.logout();
            Toast.makeText(ctx,"Login failed ! " + fail, Toast.LENGTH_LONG).show();
            Intent intent = new Intent(ctx, Login.class);
            ctx.startActivity(intent);
        }else{
            Toast.makeText(ctx, "Check flag is = " + checkFlag, Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(ctx, MainActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            ctx.startActivity(intent);
            pref.createLoginSession(login_name);
        }}}
 new LoginTask(this);

將所有需要的參數作為參數放入構造函數中。 正如您對上下文所做的那樣。

 new LoginTask(this, checkFlag);

其他參數也是如此。 您現在的操作方式非常混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM