首页 > 解决方案 > 从 Android Studio 中的 url 获取单个整数变量

问题描述

我是 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 的许多示例,但我失败了。

标签: javaandroid

解决方案


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

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


推荐阅读