Доброго
уже второй день бьюсь, не могу понять, есть активити, в нём фрагменты, есть меню, с помощью него все фрагменты нормально переключаются, но мне нужно, чтобы при старте показывал первый фрагмент, но увы..
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import www.finefood.CreateNewUser.CreateNewUser;
import www.finefood.R;
import www.finefood.TestData.TestData;
import www.finefood.main.Fragment.AbstractionFragment;
import www.finefood.main.Fragment.CreateMenuFragment;
import www.finefood.main.Fragment.SettingMenuFragment;
import www.finefood.main.Fragment.WatchProgressFragment;
public class MainActivity extends AppCompatActivity {
private String[] titles;
private ListView drawerList;
FragmentTransaction transaction;
FragmentManager manager;
AbstractionFragment createMenuFragment = new CreateMenuFragment();
AbstractionFragment watchProgressFragment = new WatchProgressFragment();
SettingMenuFragment settingMenuFragment = new SettingMenuFragment();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
titles = getResources().getStringArray(R.array.menu_fragment);
drawerList = (ListView) findViewById(R.id.drawer);
drawerList.setAdapter(new CustomListAdapter(this,
android.R.layout.simple_list_item_1, titles));
drawerList.setOnItemClickListener(new DrawerItemClickListener());
}
@Override
protected void onStart() {
super.onStart();
//Заплатака
if (!TestData.testNewUser)
//Заплатка
{
Intent intent = new Intent(getApplicationContext(), CreateNewUser.class);
startActivity(intent);
this.finish();
}
manager = getSupportFragmentManager();
transaction = manager.beginTransaction();
transaction.add(R.id.drawer_container, createMenuFragment, createMenuFragment.getTitle());
}
/*
* приватный класс, выводит необходимый фрагмент в MainActivity по нажатию меню.
* Возможно стоит вынести отдельно, но в конструктор нужно передать ссылку на FragmentActivity
*/
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
manager = getSupportFragmentManager();
transaction = manager.beginTransaction();
switch (position) {
case 0:
if (manager.findFragmentByTag("CreateMenuFragment") == null)
transaction.replace(R.id.drawer_container, createMenuFragment, createMenuFragment.getTitle());
break;
case 1:
if (manager.findFragmentByTag("WatchProgressFragment") == null)
transaction.replace(R.id.drawer_container, watchProgressFragment, watchProgressFragment.getTitle());
break;
case 2:
if (manager.findFragmentByTag("SettingMenuFragment") == null)
transaction.replace(R.id.drawer_container, settingMenuFragment, settingMenuFragment.getTitle());
break;
}
transaction.commit();
}
}
}
сам layout
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorStage"
android:id="@+id/drawer_layout">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.widget.DrawerLayout>
<ListView
android:id="@+id/drawer"
android:dividerHeight="5dp"
android:background="@color/listViewBackground"
android:choiceMode="singleChoice"
android:layout_gravity="start"
android:layout_width="300dp"
android:layout_height="match_parent">
</ListView>
</android.support.v4.widget.DrawerLayout>