2017-04-20 67 views
0

我想从我的应用程序返回一个api得到我的结果,以便每个将在它自己的textView。后来我想为每个按钮添加一个按钮,但现在我只是试图让结果显示在我的应用程序中。在我的try声明一切似乎很好,除了在线final TextView rowTextView = new TextView(this)this给我一个错误(得到红色下划线)说TextView android.content.Context textView cannot be applied anonymous.okhttp3.Callback。我不确定有什么问题以及如何解决。我将不胜感激任何帮助!谢谢!这里是我的代码:以编程方式添加textView; textView不能应用anonymous.okhttp3.Callback

OkHttpClient client = new OkHttpClient(); 

        MediaType mediaType = MediaType.parse("application/octet-stream"); 
        RequestBody body = RequestBody.create(mediaType, "{}"); 
        Request request = new Request.Builder().url(url).get().build(); 


          client.newCall(request).enqueue(new Callback() { 
           @Override public void onFailure(Call call, IOException e) { 
            e.printStackTrace(); 

           } 

           @Override public void onResponse(Call call, Response response) throws IOException { 

            Headers responseHeaders = response.headers(); 
            for (int i = 0, size = responseHeaders.size(); i < size; i++) { 
             System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i)); 
            } 

            //System.out.println(response.body().string()); 
            //System.out.println(response.body().toString()); 
            String jsonData = response.body().string(); 
            try { 
             JSONObject Jobject = new JSONObject(jsonData); 
             JSONArray Jarray = Jobject.getJSONArray("results"); 
             final TextView[] myTextViews = new TextView[Jarray.length()]; 
             for (int i = 0; i < Jarray.length(); i++) { 
              JSONObject object = Jarray.getJSONObject(i); 
              System.out.println(object.toString()); 
              final TextView rowTextView = new TextView(this); 
              rowTextView.setText(object.toString()); 
             } 
            }catch (JSONException e) { 
             e.printStackTrace(); 
             Log.e("MYAPP", "unexpected JSON exception", e); 

            } 


           } 
          }); 
+0

请不要污蔑自己的帖子。 –

回答

0

在你的情况下,“this”是anonymous.okhttp3.Callback类的实例,而是使用类似“YourFragmentClass.this.getActivity()”的东西。

+0

我的课被称为'Search',它扩展了'Fragment';我尝试将其更改为'Search.this',但现在它说它不能应用于搜索 –

+0

TextView构造函数参数应该是Context类的实例,您可以使用“getActivity()”方法从片段实例中获取它。我更新了原始答案。 – Biggemot

+0

谢谢!这样可行! –

0

此代码:

最终的TextView rowTextView =新的TextView(本); rowTextView.setText(object.toString());

是没有意义的。你创建TextView,这很好。然后你设置一些文本。好。但是展示它呢? TextView仅仅是一个对象,本身并没有什么魔力显示出来。我建议你将TextView添加到布局中(如果需要,隐藏),然后设置消息并在有时间时显示它。

编辑

您的代码将无法工作,也因为thisnew TextView(this)okhttp3.Callback,而不是Context(即你的活动)。

+0

我没有写任何代码来显示它,因为我已经有了'新的TextView(this)'部分的问题,并试图首先解决它。 –

相关问题