Невозможно загрузить фрагмент внутри основного действия в структуру кадра - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь загрузить фрагмент в структуру кадра "main_container" в моей основной деятельности. Но действие не загружает структуру кадра внутри него. Как вы можете видеть, я пытался отобразить макет фрейма в своей деятельности, выделив черный фон макету фрейма. Но я не могу просмотреть макет кадра, когда приложение выполняется. Проблема в том, что я не могу просмотреть любой компонент, добавленный в activity_main, когда приложение выполняется на любом устройстве.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.MainActivity">

<FrameLayout
    android:id="@+id/main_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black" />

</RelativeLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
    setContentView(R.layout.activity_main);

    MainFragment mainFragment = new MainFragment(MainActivity.this);
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.add(R.id.main_container, mainFragment);
    fragmentTransaction.addToBackStack(mainFragment.toString());
    fragmentTransaction.commit();
   }
}

MainFragment.java

public class MainFragment extends Fragment implements MainRecyclerViewAdapter.RecyclerViewClickListener {

private RecyclerView recyclerView;
private ArrayList<DataModel> arrayList;
private LinearLayout mainLayout;
private Context mContext;

public MainFragment(Context mContext) {
    this.mContext = mContext;
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_main, container, false);
    return v;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    recyclerView = (RecyclerView) view.findViewById(R.id.main_rv);
    mainLayout = view.findViewById(R.id.ll_fragment_main);
    arrayList = new ArrayList<>();

    arrayList.add(new DataModel("Diseases", R.drawable.ic_disease));
    arrayList.add(new DataModel("Diet Plan", R.drawable.ic_diet_plan));
    arrayList.add(new DataModel("Nutritions", R.drawable.ic_nutrition));
    arrayList.add(new DataModel("Food Info", R.drawable.ic_nutrient_sources));

    MainRecyclerViewAdapter adapter = new MainRecyclerViewAdapter(getContext(), arrayList, this);
    recyclerView.setAdapter(adapter);

    AutoFitGridLayoutManager layoutManager = new AutoFitGridLayoutManager(getContext(), 500);
    recyclerView.setLayoutManager(layoutManager);
}

@Override
public void onClick(View view, int position) {
    switch (position) {
        case 0:
            Message.successMessage(mainLayout, "Disease");
            break;
        case 1:
            Message.successMessage(mainLayout, "Diet Plan");
            break;
        case 2:
            Message.successMessage(mainLayout, "Nutritions");
            break;
        case 3:
            Message.successMessage(mainLayout, "Food Info");
            break;
       }
   }
 }

Спасибо.

1 Ответ

0 голосов
/ 31 октября 2018

Вы переопределяете неправильный метод onCreate в Activity.

Переопределить это-

@Override
protected void onCreate(Bundle savedInstanceState) {

}

вместо

@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable 
PersistableBundle persistentState)
...