Я хочу открыть фрагмент из 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?
Вы можете попробовать что-то вроде -
Создайте новое занятие.
Добавьте свой фрагмент в созданное выше действие.
В своем элементе 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-й тип аргумента