我是 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 完成之前单击该按钮(竞争条件)。
phone
是 fetchDBDetails
的成员,不能像 DBDetails 中的 phone' 一样访问
您需要以某种方式将电话变量从 fetchDBDetails
类传递回您的 DBDetails
类。
编辑:
你可以在DBDetails
中添加一个公共(public)成员变量public String phone
然后做
fetchDatenbankDetailsContext.phone = telefon;
在 onPostExecute()
结束时
关于android - Android 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009694/