【问题标题】:Fragment is not replaced on gridview item click in android在android中的gridview项目单击上不会替换片段
【发布时间】:2017-08-31 07:01:02
【问题描述】:

我正在尝试替换或调用GridView 项目单击上的片段,但是当我调用我的片段时,GridView 也可见,我的片段也可见。我需要隐藏GridView 并显示我的片段。 请帮助我。 onItemClick of GridView 我想打开我的片段。为此,我使用了以下代码。

这是我的代码

package com.softians.car;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener
{

//================================================================================================================

    GridView grid;
    String[] web = {
            "MLA",
            "Important Work",
            "Feedback",
            "Contact",
            "Events",
            "Work Done",
            "Party Info",
            "Images",
            "Video",
            "Shere",
            "City Info",
            "Gov.Links",
            "news",
            "Educational",
            "pay Bill",
            "Election",
            "Job",
            "Mobile Bill"


    } ;
    int[] imageId = {
            R.drawable.mla,
            R.drawable.imp,
            R.drawable.feedback,

            R.drawable.contact,
            R.drawable.event,
            R.drawable.workdone,

            R.drawable.leader,
            R.drawable.images,
            R.drawable.video_player,

            R.drawable.share,
            R.drawable.cityscape,
            R.drawable.link,

            R.drawable.news,
            R.drawable.education,
            R.drawable.billpay,

            R.drawable.vote,
            R.drawable.job,
            R.drawable.transfer

    };

//========================================================================================================
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


//==========================================Grid View==========================================================================


        CustomGrid adapter = new CustomGrid(MainActivity.this, web, imageId);
        grid=(GridView)findViewById(R.id.grid);
        grid.setAdapter(adapter);
        grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,int position, long id)
            {
//                if (position==1)
//                {
//                    Intent i = new Intent(MainActivity.this, Important_Activity.class);
//                    startActivity(i);
//                    // Toast.makeText(MainActivity.this, "You Clicked at " + web[+position], Toast.LENGTH_SHORT).show();
//                }
//                else
//                {
//                    Toast.makeText(MainActivity.this, "Working...", Toast.LENGTH_SHORT).show();
//                }


                switch (position)
                {
                    case 0: Information aa = new Information();
                            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();

                            fragmentTransaction.replace(R.id.frame,aa);
                            fragmentTransaction.commit();



//                    case 0: Intent mla = new Intent(MainActivity.this, Information.class);
//                            startActivity(mla);
//                            break;
//
//                    case 1: Intent imp = new Intent(MainActivity.this, Important_Activity.class);
//                            startActivity(imp);
//                            break;
//
//                    case 3: Intent con = new Intent(MainActivity.this, Important_Activity.class);
//                            startActivity(con);
//                             break;
//
                }

            }
        });

【问题讨论】:

  • 可以分享activity_main的xml布局吗?
  • 将片段背景设置为白色

标签: android android-fragments android-gridview


【解决方案1】:

你的问题在于你的 Fragment 的background。由于您可能没有为片段定义任何背景,因此它变得透明,因此两个视图都可见(您的 GridView 和片段)。

在您的片段 XML 定义的根布局上,例如:

android:background="@color/white"

之后你会发现fragment(GridView)下面View的点击事件即使不可见也会被调用,所以在同一个布局中,你定义了整个Fragment的背景,还要补充:

android:clickable="true"

【讨论】:

    【解决方案2】:
    try this        
    
     switch (position) {
                 case 0: Information aa = new Information();
                      FragmentTransaction fragmentTransaction =  getSupportFragmentManager().beginTransaction();
           fragmentTransaction.replace(R.id.frame,aa);
           fragmentTransaction.commit();
            grid.setVisibility(View.GONE);
                            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2014-06-28
      • 2021-11-16
      • 2020-01-15
      相关资源
      最近更新 更多