android - Android 中的变量作用域

标签 android variables scope

我是 android 的新手,在访问应用程序中的变量时遇到了一些问题。我试过在 onClick 方法中访问它,但它给了我错误。我怎么读它? 这是简单的代码:

public class DBDetails extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dbdetails);
        new fetchDBDetails(this).execute();

        Button ButtonCall = (Button) findViewById(R.id.ButtonCall);
        ButtonCall.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            //READING VALUE BELOW
        startActivityForResult(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phone)), 1);
           }
        });
      }
}

    class fetchDBDetails extends AsyncTask<String, Void, String> {
        private DBDetails fetchDBDetailsContext = null;
        String phone;

        public fetchDBDetails(DBDetails context) {
            fetchDBContext = context;
        }
        @Override
        protected String doInBackground(String... params) {
                    phone = "12345678"; //ASSIGNING VALUE HERE
        }
    }

提前致谢

最佳答案

你在这里有不同的问题。 首先,用户可能会在您的 ASyncTask 完成之前单击该按钮(竞争条件)。

phonefetchDBDetails 的成员,不能像 DBDetails 中的 phone' 一样访问

您需要以某种方式将电话变量从 fetchDBDetails 类传递回您的 DBDetails 类。

编辑:

你可以在DBDetails中添加一个公共(public)成员变量public String phone然后做

fetchDatenbankDetailsContext.phone = telefon;

onPostExecute() 结束时

关于android - Android 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009694/

相关文章:

c++ - BOOST_SCOPE_EXIT 将参数作为值传递

javascript - 使用字符串访问 Javascript 对象

Android IPC LocalSocket 与 Binder (AIDL)

android - SQLite 绑定(bind)参数 - 它们仅限于 WHERE 子句吗?

php - 检查变量是否不同于多个值

python - python替换错误。 (属性错误 : 'tuple' object has no attribute 'replace' )

java - 变量在一个实例中未使用,但在另一实例中未使用

javascript - undefined variable - 范围问题? - JavaScript

Android:AsyncTask超时

java - 如何将信息从一个 Activity 的 EditText 传递到另一个 Activity ,以便将 url 加载到该新 Activity 的 WebView 中?