从Android Studio中的网址获取单个整数变量

时间:2018-07-04 22:43:35

标签: java android

我是java和android studio的新手,我在播放外部数据时有点用,但是读json或其他内容失败。

 public class MainActivity extends AppCompatActivity {

    int a;
    Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setContentView(R.layout.activity_main);

        button= (Button)findViewById(R.id.button);
        button.setOnClickListener(imgButtonHandler);
    }


    View.OnClickListener imgButtonHandler = new View.OnClickListener() {

        public void onClick(View v) {
           // Intent intent = new Intent(MainActivity.this, PostDataActivity.class);
                 ImageView image = (ImageView)findViewById(R.id.imageView);

            String url = "http://www.example.com/data.json";

            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
                    (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

                        @Override
                        public void onResponse(JSONObject response) {
                            TextView z = (TextView) findViewById(R.id.textView2);
                            z.setText("Response: " + response.toString());
                        }
                    }, new Response.ErrorListener() {

                        @Override
                        public void onErrorResponse(VolleyError error) {
                            TextView z = (TextView) findViewById(R.id.textView2);
                            z.setText("Blad");

                        }
                    });

            switch(a) {
                default:
                    image.setImageResource(R.drawable.main);
                    TextView t = (TextView) findViewById(R.id.textView);
                    t.setText("Gotowy");
                    a=1;
                    break;
                case 1:
                    image.setImageResource(R.drawable.poprawny);
                    TextView b = (TextView) findViewById(R.id.textView);
                    b.setText("Poprawny");
                    a=2;
                    break;
                case 2:
                    image.setImageResource(R.drawable.stop);
                    TextView c = (TextView) findViewById(R.id.textView);
                    c.setText("Stop");
                    a=0;
                    break;
            }
         }
    };
}

textView2不显示任何默认文本。

我的目标是从json或php echo中获取一个int变量并将其打印在textView上,甚至更好地将其作为公共变量。

我尝试了很多来自OKhttp,json,generic_asynctask的示例,但是我失败了。

2 个答案:

答案 0 :(得分:0)

您在使用Volley吗?如果是,则需要实际排队您的请求。就像是 requestQueue.addToRequestQueue(jsonObjectRequest)

此外,回调将在后台线程上调用。您必须将它们发布到UI线程才能修改视图状态。

答案 1 :(得分:0)

您需要将请求添加到RequestQueue,如下所示:

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

否则,它永远不会运行。