Android actionbar活动中未更新成员变量
我的两个全局成员变量不知何故没有获得我在oncreate()方法中分配给它们的数据,下面是我的代码。在okhttp的response()方法中,log.d打印正确的大小,但在该大小之外,它打印0。请参阅下面的代码Android actionbar活动中未更新成员变量,android,android-activity,scope,Android,Android Activity,Scope,我的两个全局成员变量不知何故没有获得我在oncreate()方法中分配给它们的数据,下面是我的代码。在okhttp的response()方法中,log.d打印正确的大小,但在该大小之外,它打印0。请参阅下面的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_im
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_grid);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
// for (int start = 0; start < 20; start++) {
if (isNetworkAvailable()) {
//using okHttp library to connect to imagesUrl and retrieve JSON Data
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(getImagePage(start)).
build();
Call call = client.newCall(request);
//runs the below code asynchronously
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.v(TAG, "error from request");
}
@Override
public void onResponse(Response response) throws IOException {
try {
String jsonData = response.body().string();
//Log.v(TAG, jsonData);
if (!response.isSuccessful()) {
alertUserAboutError();
} else {
mSmalImagesUrls = getCurrentDetails(jsonData);
mBigImagesUrls.add(mSmalImagesUrls);
Log.d(TAG, mBigImagesUrls.size() + " big size");
Log.d(TAG, mSmalImagesUrls.size() + " small size");
}
} catch (IOException | JSONException e) {
Log.e(TAG, "Exception caught :", e);
}
}
});
} else {
Toast.makeText(this, "Network is unavailable", Toast.LENGTH_LONG).show();
}
//}
Log.d(TAG, mBigImagesUrls.size() + " big size");
Log.d(TAG, mSmalImagesUrls.size() + " small size");
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u image\u grid);
如果(savedInstanceState==null){
getSupportFragmentManager().beginTransaction()
.add(R.id.container,新的占位符片段())
.commit();
}
//对于(int start=0;start<20;start++){
if(isNetworkAvailable()){
//使用okHttp库连接到imagesUrl并检索JSON数据
OkHttpClient=新的OkHttpClient();
Request Request=newrequest.Builder()
.url(getImagePage(开始))。
build();
Call Call=client.newCall(请求);
//异步运行下面的代码
call.enqueue(新回调(){
@凌驾
公共void onFailure(请求,IOE异常){
Log.v(标签“请求错误”);
}
@凌驾
public void onResponse(Response-Response)引发IOException{
试一试{
String jsonData=response.body().String();
//Log.v(标签,jsonData);
如果(!response.issusccessful()){
alertUserAboutError();
}否则{
MSAlimageSurls=getCurrentDetails(jsonData);
mBigImagesUrls.add(mSmalImagesUrls);
Log.d(标记,mBigImagesUrls.size()+“大尺寸”);
Log.d(标记,mSmalImagesUrls.size()+“小尺寸”);
}
}捕获(IOException | JSONException e){
Log.e(标记“异常捕获:”,e);
}
}
});
}否则{
Toast.makeText(此“网络不可用”,Toast.LENGTH_LONG.show();
}
//}
Log.d(标记,mBigImagesUrls.size()+“大尺寸”);
Log.d(标记,mSmalImagesUrls.size()+“小尺寸”);
}
最后3个Log.d语句打印0。我不知道为什么。请让我知道我错过了什么。谢谢您知道您正在启动一个异步请求,对吗?这意味着最后两个
Log.d
行不会立即具有“updated”值,您必须等待未知的时间,直到调用回调,然后在onResponse
方法中更新全局变量。谢谢,这意味着lotMember变量不是全局变量。