0

我有一组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
            });

我调用AsyncTaskwhich 验证用户是否针对 web 服务,然后将实例变量 fullName 设置为用户名。

这个 AsyncTask 是从 Activity 的onClick(). 我使用下面的方法来调用活动的超类方法setcarer(),该方法在超类中设置标题。

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

为什么这没有得到反映?

EntryActivity.this.setCarername(fullName);
4

1 回答 1

0

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

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

于 2012-09-25T11:19:06.180 回答