android - 让 Android 选项菜单等到从 Web 请求返回

标签 android json

我正在调用一个端点来提取 JSON。我希望 Activity 等待设置选项菜单,因为如果键值从 Web 服务返回 true,我希望星形图标显示完整,反之亦然。 我已经尝试使用 onPrepareOptionsMenu() 对此进行编程,但因为响应是在一个单独的线程上,所以它会加载切换图标的默认值。

指针会很有帮助!

@Override
public boolean onPrepareOptionsMenu(Menu menu){
    if(isFavorite){
        menu.removeItem(R.id.action_non_favorite);
        menu.add(101, R.id.action_favorite, 0, "true");
    }else{
        menu.removeItem(R.id.action_favorite);
        menu.add(101, R.id.action_non_favorite, 0, "false");
    }
    return super.onPrepareOptionsMenu(menu);
}

这是请求:

private void sendDetailRequest(String urlRequest, final Person contact) {
    JsonObjectRequest objectRequest1 = new JsonObjectRequest(Request.Method.GET, urlRequest, null,new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            String jsonString = response.toString();
            Gson gson = new GsonBuilder().create();
            Person.PersonDetail personDetail = gson.fromJson(jsonString, Person.PersonDetail.class);
            contact.setContactDetails(personDetail);
            isFavorite = personDetail.favorite;

            //prepareOptionsMenu(R.menu.menu_main);
            buildPage(contact);
        }
    }, new Response.ErrorListener(){
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(contactDetails.this, error.getMessage(), Toast.LENGTH_LONG).show();

        }

    });

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(objectRequest1);

}

最佳答案

I want a star icon to appear full if a key-value returns true from the web service and vice versa

第 1 步:正常创建菜单。但是,有android:visible="false"<item> 上对于明星。

第 2 步:在 onCreateOptionsMenu() 中, 在使用 MenuInflater 之后膨胀菜单,call findItem() on the Menu , 传入你的 star item 的 ID。捕获那个MenuItem在您的 Activity 或 fragment 的某个领域。

第 3 步:当您的 Web 服务调用完成时,返回主应用程序线程,如果需要,call setVisible(true) on the MenuItem , 让星标对用户可见。

IOW,不要试图延迟操作栏项目的创建,因为那样不会很好。相反,根据需要使项目可见和不可见。

关于android - 让 Android 选项菜单等到从 Web 请求返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248367/

相关文章:

android - 手机间隙 : how to use Google Analytics without plugin

android - AppCompat Action Bar 库不显示添加的 fragment

javascript - 将数组转换为对象并将对象插入数组 -javascript

php - mysql php数组转特定格式

java - 如何使用 net.sf.json 库验证给定字符串是否有效 JsonArray

java - Android:onTouchEvent启动新 Activity

android - 拔下 USB 数据线后重新连接应用程序进行调试

java - Button.setBackground(Drawable 背景) 抛出 NoSuchMethodError

json - Angular 9 HttpErrorResponse 'JSON.Parse error' 响应正常

javascript - 在javascript中将某种格式的字符串转换为JSON