当前位置: 首页 > 知识库问答 >
问题:

如何从gridview中打开片段?

云隐水
2023-03-14

我想从我有gridview的MainActivity中打开一个片段。我是android新手,这是第一次使用fragment。这是我的主要活动:

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(MONTClass.this,MainActivity.class);但这并不work.do我必须修改我的主活动来扩展碎片活动?

共有2个答案

麻茂材
2023-03-14

遵循以下代码

 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();
狄楷
2023-03-14

你可以试试像-

>

  • 创建新活动。

    在上述创建的活动中添加片段。

    在您的GridView项目单击中,通过Intent打开新活动,例如-start Active(new Intent(MainActivity.this, NewActivity.class));

  •  类似资料:
    • 如何在CardView中打开onClick中的片段?我在Cardview中有一个列表,当我单击时希望在另一个片段中显示。这是adapter.class 这是layout.xml 我解决了onClick的问题,现在我的问题是我不能打开另一个片段。如何在myActive中调用我的方法?

    • 问题内容: 从Activity中包含的RecyclerView的适配器中,我试图在按下RecyclerView的元素时启动一个片段,这是我现在的代码: 我测试了它是否启动了我创建的一些“测试活动”,所以我知道除了片段启动之外的所有功能都可以正常工作。 错误在这里: 我正在启动作为活动的Fragment,所以当我运行应用程序时,它崩溃了,并告诉我在清单中将MainFragment声明为活动。 如何从

    • 我正在使用developer.android.com指南来构建一个应用程序。我在Android Studio做新项目时选择了“导航:导航抽屉”。我已经在互联网上搜索我的问题的答案,但我没有找到任何有效的。抱歉,我是编程新手。 在导航抽屉中单击时,如何使应用程序在主视图中打开一个新的片段? 在导航抽屉中单击时,是否可以使用选项卡打开多个可滑动的片段? 如何使“标题”可展开/可折叠? http://d

    • 问题内容: 我想知道如何从gridview获取列名?按其编号而不按名称。例如:姓名|年龄|生日:(所以姓名= 0,年龄= 1等) 谢谢。 问题答案: 您可以这样获得它: 或像这样: Rows [0]应该是您的标题行。

    • 问题内容: 我是Android的新手,这是我的第二个应用程序。我正在创建一个选项卡式活动,其中第一个片段具有创建新任务的形式,第二个片段具有所有已保存任务的列表,第三个片段从第二个列表中选择时将显示任务注释分段。第三个片段也应该像一个聊天活动,当您键入评论并点击发送按钮时,它会发布评论。当我从另一个地方(在下面的链接的GitHub分支中)实施此聊天活动时,该应用程序将完全按预期运行。但是,当我尝试

    • 我已经想从我的Main活动启动我的RecipientFra法规,并从我的Main活动将数据传递到Fra法规。这是我实现的代码。但是碎片没有开始。 我还想知道如何传递intent.set数据,并在碎片中获取数据。目前我有以下代码: 受体片段 主要活动