Как я могу открыть фрагмент из gridview?

Я хочу открыть фрагмент из MainActivity, где у меня есть gridview. Я новичок в Android, и это первый раз, когда я использую фрагмент. это моя основная деятельность:

package com.example.grasu.petrosani;

import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.ThemedSpinnerAdapter;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener,AdapterView.OnItemClickListener{
    private DrawerLayout DrawerLayout;
    private NavigationView Drawer;
GridView gridview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Drawer = findViewById(R.id.nav_view);
        Drawer.setNavigationItemSelectedListener(this);
        DrawerLayout = findViewById(R.id.drawer_layout);

        CategoryAdapter adapter = new CategoryAdapter(this, getSupportFragmentManager());



      gridview=findViewById(R.id.album_Gridview);
gridview.setAdapter(new GridViewAdapter(this));
    }


    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        return false;
    }


    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (parent.getId()==R.id.album_Gridview){
            switch (position) {
                case 0:

            }
            }
        }
    }

this is my xml for activity main:
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/drawer_layout"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:fitsSystemWindows = "true">


<FrameLayout
    android:id = "@+id/content_frame"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent" >
    <GridView
        android:id = "@+id/album_Gridview"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:numColumns = "2"
        android:layout_marginTop = "10dp">

    </GridView>

</FrameLayout>
    <android.support.design.widget.NavigationView
    android:id = "@+id/nav_view"
    android:layout_width = "wrap_content"
    android:layout_height = "match_parent"
    android:layout_gravity = "start"
    android:fitsSystemWindows = "true"
        android:duplicateParentState = "true"
        app:menu = "@menu/drawer_view"/>

</android.support.v4.widget.DrawerLayout>

и это фрагмент, который я хочу открыть из gridview:

package com.example.grasu.petrosani;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class InfoFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.info, container, false);

        return rootView;
    }}

я пробовал с FragmentManager fm = getSupportFragmentManager (); FragmentTransaction ft = fm.beginTransaction (); ft.replace (CurrentClass.this, MainActivity.class); но это не сработало. мне нужно изменить мою основную активность, чтобы расширить fragmentActivity?

0
0
115
2

Ответы 2

Вы можете попробовать что-то вроде -

  • Создайте новое занятие.

  • Добавьте свой фрагмент в созданное выше действие.

  • В своем элементе GridView щелкните, откройте новое действие с помощью намерения, например - startActivity(new Intent(MainActivity.this, NewActivity.class));

Следуйте приведенному ниже коду:

 FragmentTransaction fragmentTransaction = getSupportFragmentManager()
                    .beginTransaction();
    Fragment profileFragment = new InfoFragment();//the fragment you want to show
    profileFragment.setArguments(bundle);
    fragmentTransaction
        .replace(R.id.content_frame, profileFragment);//R.id.content_frame is the layout you want to replace
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();

У меня есть ошибка "не удается разрешить символ" в пакете и в fragmentTransaction.replace (R.id.album_Gridview, profileFragm ent) говорит: неправильный 2-й тип аргумента

Prox 24.04.2018 19:42

Другие вопросы по теме