【问题标题】:How to Reload a Page while clicked on Button?单击按钮时如何重新加载页面?
【发布时间】:2017-04-30 15:15:53
【问题描述】:

在我的应用程序中,我想从数据库中检索数据。但我面临的问题是,数据是从数据库中获取的,但在我重新打开页面时数据显示时没有显示。当我点击按钮时,我想重新加载一个页面。

这里的代码如下:-

Btngetdata.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
             new InTimeInsert().execute();
        }
    });


private class InTimeInsert extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... args) {

            try {
                arraylist = new ArrayList<HashMap<String, String>>();

                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("at_username", uid));

                JSONObject json = jParser.makeHttpRequest(url_intime,"GET", params);

                //ownerObj = json.getJSONArray("visit");
                for (int i = 0; i < ownerObj.length(); i++) {
                    jsonobject = ownerObj.getJSONObject(i);
                    time_fetch.add(jsonobject.getString("at_itime"));
                }
            } catch (Exception e) {
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void args) {
            ina.setText(""+delivery_fetch);
        }
    }



private class AllAtendence extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... args) {

        try {
            arraylist = new ArrayList<HashMap<String, String>>();

            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("at_username", uid));

            JSONObject json = jParser.makeHttpRequest(url_allatendence,"GET", params);

            ownerObj = json.getJSONArray("visit");
            for (int i = 0; i < ownerObj.length(); i++) {
                jsonobject = ownerObj.getJSONObject(i);

                delivery_fetch =jsonobject.getString("at_date");
                lunch=jsonobject.getString("at_litime");
                rejoin=jsonobject.getString("at_lotime");
                out=jsonobject.getString("at_otime");
                Log.d("at_line",json.toString());

            }
        } catch (Exception e) {

            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(Void args) {
        ina.setText(""+delivery_fetch);
        rejoina.setText(""+lunch);
        luncha.setText(""+rejoin);
        outa.setText(""+out);
        if(ina.getText().toString().equals(""))
        {
            Btngetdata.setVisibility(View.VISIBLE);
            inti.setVisibility(View.GONE);

        }
        else
        {
            Btngetdata.setVisibility(View.GONE);
        }
        if(luncha.getText().toString().equals(""))
        {
            ltime.setVisibility(View.VISIBLE);
            luncht.setVisibility(View.GONE);
        }
        else
        {
            ltime.setVisibility(View.GONE);
        }
        if(rejoina.getText().toString().equals(""))
        {
            rtime.setVisibility(View.VISIBLE);
            rejoint.setVisibility(View.GONE);
            }
        else
        {
            rtime.setVisibility(View.GONE);
        }
        if(outa.getText().toString().equals(""))
        {
            otime.setVisibility(View.VISIBLE);
            outt.setVisibility(View.GONE);
        }
        else
        {
            otime.setVisibility(View.GONE);
        }


    }
}   

【问题讨论】:

  • 如果您使用的是Activity,您可以重新启动该Activity,而无需提供No Animation
  • 我正在使用 Fragment。
  • 那你必须detachFragmentReattch给它。
  • 你能用一些代码解释一下吗???

标签: android json reload


【解决方案1】:

如果您只获取一个数据,则可以使用它来解决您的问题.. 并使用日志查看在获取数据时是否有任何错误……在捕获块上……祝你好运。

private class InTimeInsert extends AsyncTask<Void, Void, Void> {

    String fetched_data = "";

    @Override
    protected Void doInBackground(Void... args) {

        try {
            arraylist = new ArrayList<HashMap<String, String>>();

            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("at_username", uid));

            JSONObject json = jParser.makeHttpRequest(url_intime,"GET", params);

            //ownerObj = json.getJSONArray("visit");
            for (int i = 0; i < ownerObj.length(); i++) {
                jsonobject = ownerObj.getJSONObject(i);
                this.fetched_data = jsonobject.getString("at_itime");
            }
        } catch (Exception e) {
           Log.d("fetch err", e.toString());
        }
        return null;
    }
    @Override
    protected void onPostExecute(Void args) {
        ina.setText(""+this.fetched_data);
    }
}

【讨论】:

  • 评论不用于扩展讨论;这个对话是moved to chat
  • OKEYY... 现在记录正在获取... 完美.. 但是另一个问题来了,按钮没有隐藏... 我在 if 条件下设置了它的可见性.. 所以当我点击数据显示的按钮,但按钮保持原样
【解决方案2】:
//put your code in onResume methods
    @Override protected void onResume() {
        super.onResume();
       // call here
        new InTimeInsert().execute();
    }

【讨论】:

  • fragment也有onResume方法
  • 因为我想在 OnClickevent 上执行此任务
  • 覆盖片段中的onResume方法并调用new InTimeInsert().execute();
  • 它会直接生成时间,我需要在onClick上生成它
  • @Sachin 你到底有什么问题
【解决方案3】:

添加.get();,同时调用AsyncTask

喜欢:

new InTimeInsert().execute().get();

它等待AsyncTask的结果。

通过这样做,将首先执行AsyncTask,然后继续控制流程。

【讨论】:

    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 2018-12-18
    • 2023-03-13
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多