Android Studio应用程序向用户显示错误消息

时间:2015-12-30 10:46:52

标签: java android android-studio

伙计们我的应用程序中的实现错误处理有问题。 当休息的响应代码不是200时,我想向我的应用程序的用户显示错误消息。换句话说:如果连接错误,我想显示消息,用户必须检查他的互联网连接和再试一次。如果一切正常,我想像往常一样做所有事情,所以加载内容。

我写的是这样的:

Toast errorToast = Toast.makeText(NewsActivity.this, "Error, pls chech your internet connection and try again!", Toast.LENGTH_SHORT);
errorToast.show();

和此:

if(response.getStatusLine().getStatusCode() == 200){}

但我不知道如果这是好代码,我应该在哪里插入它。我将非常感谢你的帮助和建议。

这是这段代码:

public class NewsActivity extends Activity {

private static final String URL = "http://10.0.2.2:8083/rest/aktualnosci";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_news);

    new FetchItems().execute();
}

private class FetchItems extends AsyncTask<String, Void, JSONArray> {

    protected JSONArray doInBackground(String... params) {
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(URL);
        httpget.setHeader("Content-type", "application/json");

        JSONArray json = new JSONArray();

        try {
            HttpResponse response = httpclient.execute(httpget);
                json = new JSONArray(EntityUtils.toString(response.getEntity()));
                return json;
            }

        } catch (Exception e) {
            Log.v("Błędne wczytanie", e.getMessage());
        }

        return json;
    }

    protected void onPostExecute(JSONArray result) {
        ListView lst = (ListView) findViewById(R.id.aktualnosci_list);
        ArrayList<String> listItems = new ArrayList<String>();
        String contentToEdit;
        String titleContainer;
        TextView newsHeaderTextView = null;
        for (int i = 0; i < result.length(); i++) {
            try {
                titleContainer = result.getJSONObject(i).getString("title").toString();
                listItems.add(titleContainer);
                contentToEdit=result.getJSONObject(i).getString("body").toString();
                contentToEdit= Html.fromHtml(contentToEdit).toString();
                listItems.add(contentToEdit);

            } catch (Exception e) {
                Log.v("Błędne wczytanie1", e.getMessage());
            }
        }

        ArrayAdapter ad = new ArrayAdapter(NewsActivity.this, android.R.layout.simple_list_item_1, listItems);
        lst.setAdapter(ad);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

}

2 个答案:

答案 0 :(得分:4)

您可以在doInBackground方法中添加它。

   runOnUiThread(new Runnable() {
                        public void run() {
                            if (response.getStatusLine().getStatusCode() != 200) {
                                Toast errorToast = Toast.makeText(NewsActivity.this, "Error, pls chech your internet connection and try again!", Toast.LENGTH_SHORT);
                                errorToast.show();
                            }

                        }
                    });

答案 1 :(得分:0)

/ *   我认为您的代码工作很好,根据需要进行了一些更改  * /

public class NewsActivity extends Activity {

private static final String URL = "http://10.0.2.2:8083/rest/aktualnosci";
String jsonArrayString = "";
String message = "Error, pls check your internet connection and try again!";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_news);

    new FetchItems().execute(this);
}

private class FetchItems extends AsyncTask<Context,Void,String>{
    Context temp;


    @Override
    protected String doInBackground(Context... params) {
        temp = params[0];

        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(URL);
        httpget.setHeader("Content-type", "application/json");

        JSONArray json = new JSONArray();

        try {
            HttpResponse response = httpclient.execute(httpget);

            if(response.getStatusLine().getStatusCode() == 200) {
                json = new JSONArray(EntityUtils.toString(response.getEntity()));
                jsonArrayString += json.toString();
                return jsonArrayString;
            }
            }
            catch (Exception e) {
                Log.v("Błędne wczytanie", e.getMessage());
            }
    return message;
    }

    @Override
    protected void onPostExecute(String s) {
        ListView lst = (ListView) findViewById(R.id.aktualnosci_list);
        ArrayList<String> listItems = new ArrayList<String>();
        String contentToEdit;
        String titleContainer;
        TextView newsHeaderTextView = null;

        if(!message.equals(s))
        {
            JSONArray result = null;
            try {
                result = new JSONArray(s);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            for (int i = 0; i < result.length(); i++) {
            try {
                titleContainer = result.getJSONObject(i).getString("title").toString();
                listItems.add(titleContainer);
                contentToEdit=result.getJSONObject(i).getString("body").toString();
                contentToEdit= Html.fromHtml(contentToEdit).toString();
                listItems.add(contentToEdit);

            } catch (Exception e) {
                Log.v("Błędne wczytanie1", e.getMessage());
            }
        }

        ArrayAdapter ad = new ArrayAdapter(NewsActivity.this, android.R.layout.simple_list_item_1, listItems);
        lst.setAdapter(ad);
    }
        else
        {
            Toast.makeText(temp,message,Toast.LENGTH_LONG).show();
        }

    }
}
}