安卓 如何在超类中设置标题



我有一组activities,它们都扩展了一个baseActivity

我正在尝试设置title in the BaseActivity以便它反映在所有子活动中。

应用正在登录用户。我试图在他们登录后在每个屏幕中都有username across the title

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
    public class NfcBaseActivity extends Activity{
        private static final String TAG = NfcBaseActivity.class.getSimpleName(); 
        String carername;
        public String getCarername() {
            return carername;
        }
        public void setCarername(String carername) {
            this.carername = carername;
            Log.e(TAG, "setting carername to " + this.carername);
            setTitle(carername + " is currently logged in");
        }
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setTitle(getCarername() + " is logged in");
        }
    }   
    @Override
        protected void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.entryscreen); 
            nfcscannerapplication = (NfcScannerApplication) getApplication();
            //loginWebservice = new LoginWebservice(this);
            loginWebservice = nfcscannerapplication.loginWebservice;
            userName = (EditText)findViewById(R.id.username);
            passwordPin = (EditText)findViewById(R.id.password);
            login = (Button)findViewById(R.id.buttonlogin);
            login.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    ////////////get user's input///////////

                     compId = "100";
                    String theUsername = userName.getText().toString();
                    thePassword = passwordPin.getText().toString();
                    String loginType = "1";

                    String[] params = new String[]{compId, theUsername, thePassword, loginType};
                    //validate user Asynchonously on background thread
                    AsyncValidateCarer avc = new AsyncValidateCarer();
                    avc.execute(params);
                EntryActivity.this.setCarername(fullName);
                }// end of onclick
            });

我调用 AsyncTask 它根据 Web 服务验证用户,然后将实例变量 fullName 设置为用户名。

此异步任务是从活动的onClick()调用的。我使用以下命令调用活动的超类方法 setcarer() ,该方法在超类中设置标题。

我希望这种变化能反映在扩展超类的所有其他类中。

为什么没有反映出来?

EntryActivity.this.setCarername(fullName);

可能是因为您的fullName变量在调用EntryActivity.this.setCarername(fullName);时仍然为空。

我假设您在 AsyncTask 中的某个位置设置了此变量,因此您必须在 AsyncTask 的 onPostExecute 方法中调用EntryActivity.this.setCarername(fullName);,因为avc.execute(params);继续而无需等待 AsyncTask 完成。

最新更新