Я создал активити с вкладками стандартным способом встроенным в андроид студию. Каждая вкладка содержит 2 вложенных фрагмента - в первом фрагменте фильтры, в зависимости от выбора которых вкладывается нужный второй фрагмент. Вкладки нормально проходят по порядку от первой до последней (4 штуки). Между первыми двумя вкладками слайдится отлично, и между 3 и 4 тоже нормально переключается. Но если с 3й или 4й вернуться на 1ю или 2ю вкладку, то приложение крашится, причем всегда ругается на фрагмент принадлежащий первой вкладке, даже если слайдишь с 3-й на 2ю вкладку. Что не так?
Переключение между вкладками в активити
switch(position){
case 0:
Fragment addNewFragment = new AddNew_fragment();
Bundle args = new Bundle();
args.putString("connectURL", connectURL);
args.putString("access_token", access_token);
addNewFragment.setArguments(args);
return addNewFragment;
case 1:
Fragment toDoListFragment = new ToDoListFragment();
Bundle args1 = new Bundle();
args1.putString("connectURL", connectURL);
args1.putString("access_token", access_token);
toDoListFragment.setArguments(args1);
return toDoListFragment;
case 2:
Fragment allNewsFragment = new AllNewsFragment();
Bundle args2 = new Bundle();
args2.putString("connectURL", connectURL);
args2.putString("access_token", access_token);
allNewsFragment.setArguments(args2);
return allNewsFragment;
case 3:
Fragment myPageFragment = new MyPageFragment();
Bundle args3 = new Bundle();
args3.putString("connectURL", connectURL);
args3.putString("access_token", access_token);
myPageFragment.setArguments(args3);
return myPageFragment;
default:
return null;
}
Вложенный фрагмент 2го уровня на первой вкладке, на который студия всегда и ругается.
public class GoalsListFragment extends ListFragment {
int goalID;
int goalExist;
JSONObject jsonResponseReports = null;
JSONObject jsonResponse;
JSONArray items;
String goalDescriptionText;
StringBuilder feedInput;
String connectURL;
ArrayList<String> allGoalsList;
ArrayAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
connectURL = getArguments().getString("connectURL");
View goalFragment = inflater.inflate(R.layout.fragment_goals_list, null);
allGoalsList = new ArrayList<String>();
new GetAllGoals().execute();
return goalFragment;
}
private class GetAllGoals extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
URL url = new URL(connectURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true); // Triggers POST.
connection.setDoInput(true);
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
feedInput = new StringBuilder();
String inputBufferSymbol = "";
while ((inputBufferSymbol = br.readLine()) != null) {
feedInput.append(inputBufferSymbol);
}
br.close();
jsonResponseReports = new JSONObject(feedInput.toString());
jsonResponse = jsonResponseReports.getJSONObject("response");
if (jsonResponse.getString("count").equals("0")) {
goalDescriptionText = "В этой сфере жизни вы не поставили ни одной цели";
goalExist = 0;
} else {
goalExist = 1;
items = jsonResponse.getJSONArray("items");
int count=0;
while (count<Integer.parseInt(jsonResponse.getString("count")))
{
allGoalsList.add(items.getJSONObject(count).getString("title"));
count++;
}
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_activated_1, allGoalsList);
setListAdapter(adapter);
}
}
}
ругается всегда на адаптер в onPostExecute
adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_activated_1, allGoalsList);
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim D/AndroidRuntime: Shutting down VM
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xb2cd8908)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: FATAL EXCEPTION: main
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: java.lang.NullPointerException
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at android.widget.ArrayAdapter.(ArrayAdapter.java:153)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at fragments.GoalsListFragment$GetAllGoals.onPostExecute(GoalsListFragment.java:122)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at fragments.GoalsListFragment$GetAllGoals.onPostExecute(GoalsListFragment.java:63)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at android.os.AsyncTask.finish(AsyncTask.java:631)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at android.os.AsyncTask.access$600(AsyncTask.java:177)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5041)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-21 18:07:56.920 1729-1729/im.upgrade.upgradeim E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)