У меня есть приложение для Android, в котором есть много статей. Если вы открываете статью, создается новое действие. Теперь в работе есть часть, которая всегда одна и та же, но она отправляет запрос на сервер для получения данных. Я думал сделать фрагмент, который будет загружать данные только один раз (возможно, в MainActivity) и показывать его всем действиям. Возможно ли это и как мне это сделать?Загрузите фрагмент один раз и покажите его на других мероприятиях
Я также попытался создать фрагмент, но он по-прежнему загружает данные каждый раз, когда создается новое действие. Вот код XML.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000" />
<!-- There is more layout, but I don't think it is needed for now -->
</RelativeLayout>
И Java
private class getMessage extends AsyncTask<Void , Void, Void>{
@Override
protected Void doInBackground(Void... params) {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httppost = new HttpGet("http:///www.example.com");
HttpResponse response;
try {
response = httpclient.execute(httppost);
HttpEntity ht = response.getEntity();
BufferedHttpEntity buf = new BufferedHttpEntity(ht);
InputStream is = buf.getContent();
BufferedReader r = new BufferedReader(new InputStreamReader(is));
total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line + "\n");
}
}
catch (ClientProtocolException e) {}
catch (IOException e) {}
return null;
}
@Override
protected void onPostExecute(Void args){
try{
textView.setText(total.toString());
}
catch(Exception e){}
}
}
И код для добавления фрагмента
FragmentManager fragMan = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragTransaction = fragMan.beginTransaction();
Fragment fragment = new Fragment();
fragTransaction.add(R.id.fragment_replace, fragment);
fragTransaction.commit();
При добавлении фрагмента к сделке, добавьте его с тегом, скажем, «MYTAG». Затем, когда вы создаете новое действие, выполните поиск этого фрагмента с помощью fragMan.findFragmentByTag («MYTAG»). И просто добавьте фрагмент к активности. Я не уверен, будет ли это работать или нет, но дайте ему шанс. –
сделать все остальные действия дочерними элементами основной деятельности, расширив основную активность и получить значение вашей повторяющейся части через общую переменную в основной деятельности. –
@ eric247. Я не думаю, что это возможно. Проверьте этот вопрос http://stackoverflow.com/questions/21319351/how-to-findfragmentbytag-that-is-created-in-another-activity – Enve