设置主布局文件,为根布局设置一个id,作为内容区

给ListView的条目设置点击事件,setOnItemClickListener()方法,参数:上下文

当前的Fragment实现OnItemClickListener接口

实现onItemClick()方法

switch判断一下当前菜单的索引位置,根据索引来实例化不同的Fragment对象

调用getActivity()方法,得到宿主Activity对象,这个activity暴露一个方法,替换fragment

使用关键字instances of判断getActivity()得到的是MainActivity类的实例

调用宿主Activity对象的switchMenuFragment()方法,切换内容部分的fragment,参数:Fragment对象

宿主activity暴露方法switchMenuFragment(),切换内容区fragment,参数:Fragment对象

getSupportFragmentManager().beginTransaction().replace(R.id.ll_main_content, fragment).commit();

调用SlidingMenu对象的toggle()方法,关闭左侧菜单

设置默认,当app第一次打开时显示导航第一个的内容

MainActivity

package com.qingguow.news;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.Window; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.qingguow.news.fragment.IndexFragment;
import com.qingguow.news.fragment.MenuFragment; public class MainActivity extends SlidingFragmentActivity {
private SlidingMenu sm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置滑动菜单
setBehindContentView(R.layout.menu);
setContentView(R.layout.activity_main);
sm=getSlidingMenu();
sm.setMode(SlidingMenu.LEFT);
sm.setBehindWidth(200);
sm.setShadowDrawable(R.drawable.shape);
sm.setShadowWidth(5);
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
//替换导航fragemnt
MenuFragment menuFragment=new MenuFragment();
ft.replace(R.id.ll_left_menu, menuFragment);
//替换内容fragment
IndexFragment index=new IndexFragment();
ft.replace(R.id.ll_main_content, index).commit(); }
/**
* 暴露方法切换内容区
* @param fragment
*/
public void switchMenuFragment(Fragment fragment){
getSupportFragmentManager().beginTransaction().replace(R.id.ll_main_content, fragment).commit();
sm.toggle();
}
}

MenuFragment.java

package com.qingguow.news.fragment;

import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView; import com.qingguow.news.MainActivity;
import com.qingguow.news.R; public class MenuFragment extends Fragment implements OnItemClickListener {
private View view;
//加载布局文件
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.list_view, null);
return view;
}
//设置listview数据
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ListView listview = (ListView) view.findViewById(R.id.lv_menu); List<String> data=new ArrayList<String>();
data.add("新闻");
data.add("发现");
data.add("关注");
ListAdapter adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1,
data);
listview.setAdapter(adapter);
listview.setOnItemClickListener(this); }
/**
* 导航点击
*/
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Fragment fragment=null;
switch (position) {
case 0:
fragment=new IndexFragment();
break; default:
break;
}
if(fragment!=null){
Activity activity=getActivity();
if(activity instanceof MainActivity){
((MainActivity) activity).switchMenuFragment(fragment);
}
}
}
}

[android] 新闻客户端实现左侧导航点击切换的更多相关文章

  1. 开源:我的Android新闻客户端,速度快、体积小、支持离线阅读、操作简便、内容展现形式丰富多样、信息量大、功能全面 等(要代码的留下邮箱)

    分享:我的Android新闻客户端,速度快.体积小.支持离线阅读.操作简便.内容展现形式丰富多样.信息量大.功能全面 等(要代码的留下邮箱) 历时30天我为了开发这个新闻客户端APP,以下简称觅闻 h ...

  2. Ace教你一步一步做Android新闻客户端(四) 优化Bitmap大法

    我计划着把需要用到的知识分解开来写,趁着我们要开发这款客户端的机会把安卓所有移动客户端开发中的技术贯穿其中,也是我自己成长的过程.By Ace in 20160121 我们开发一款新闻客户端程序,它的 ...

  3. Ace教你一步一步做Android新闻客户端(一)

    复制粘贴了那么多博文很不好意思没点自己原创的也说不出去,现在写一篇一步一步教你做安卓新闻客户端,借此机会也是让自己把相关的技术再复习一遍,大神莫笑,专门做给新手看. 手里存了两篇,一个包括软件视图 和 ...

  4. [android] 新闻客户端引入SlidingMenu

    下载SlidingMenu,https://github.com/jfeinstein10/SlidingMenu 导入library 我们项目右键==>Properties==>Andr ...

  5. Ace教你一步一步做Android新闻客户端(五) 优化Listview

    今天写存货了 调试一些动画参数花了些时间 ,嘿嘿存货不多了就没法做教程了,今天来教大家优化listview,等下我把代码编辑下 这次代码有些多 所以我把条理给大家理清楚.思路就是把加载图片的权利交给O ...

  6. Ace教你一步一步做Android新闻客户端(三) JSON数据解析

    对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三种格式,现在给大家讲解一下json这个知识点, 1 如何通过json-lib和gson这两个json解析库来对解析我们的j ...

  7. [android] 新闻客户端主界面部分

    当我们使用activity加fragment的时候,每个界面都要建立一个fragment,每个fragment里面都要重写onCreate(),onCreateView(),onActivityCre ...

  8. 阿冰教你一步一步做Android新闻客户端(二)两种异步线程加载图片的方法

    哈哈哈抱着没人看的心态随便写,直接上代码,各位看官看注释 一种Thread  一种AsyncTask 先不说用框架 public class ImageLoader { private ImageVi ...

  9. android新闻App源码、仿微信源码、地图音乐源码等

    Android精选源码 一款实用的休闲类App,新闻视频和技术应有尽有. android实现交互式K线图表源码 android新闻客户端和服务器源码 android MatetialDesign设计 ...

随机推荐

  1. openstack手动安装

    安装文档: https://github.com/yongluo2013/osf-openstack-training/blob/master/installation/openstack-iceho ...

  2. Django:haystack全文检索详细教程

    参考:https://blog.csdn.net/AC_hell/article/details/52875927 一.安装第三方库及配置 1.1 安装插件 pip install whoosh dj ...

  3. Java正则表达式初学者使用法简介

    在Java中使用正则表达式的方法非常多,最简单的就是和字符串一起使用.对于Java正则表达式初学者,在String中有四个方法可以使用正则表达式,本文正是介绍这四个方法来使用正则表达式来处理文本数据. ...

  4. 装饰者模式&数据库连接池原理

    装饰者模式: 我是一个没有感情的杀手 在复习到自建数据库连接池的时候有点蒙了,再次翻看视频整理如下:(装饰者模式下自建数据库连接池修改close功能为 回收连接对象) 自备材料:数据库连接对象的获取的 ...

  5. 抓取分析网页批量下载评书(3)之批量下载mp3

         本系列目录:    <1.搜索有声小说>    <2.分析详细页地址>     <3.批量下载mp3>      本篇是大结局,看过前两篇的放心吧,不会有 ...

  6. html-文件上传设置accept类型延时问题

       今天在做文件上传时,采用了jQuery的upload插件,使用过程中发现了一个很有意思也很头疼的问题. 上传按钮,第一次点击时瞬间就可以打开文件选择框,之后再点击则需要等待恐怖的8s以上. 百度 ...

  7. Java - 初识Java

    Java是一种跨平台的面向对象的程序设计语言. 区分大小写: 标点符号为英文: 强类型语言,在Java中存储的数据,必须在编译时确定其类型: Java版本 Java按应用范围分为3个版本,即Java ...

  8. Linux学习系列之一:在centos 7.5上安装nginx 以及简单配置

    说到Linux我们都知道那是相当相当得重要得啊,在计算机这个行业,开发运维都是离不开它得.我作为一个准毕业生,智商可能不太够,只能自己笨鸟先飞,自己操作起来咯.俗话说的好,好记性不如难笔头嘛.而且ng ...

  9. centos7 系统优化

    #!/usr/bin/env bash #设置环境变量 export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/u ...

  10. mysql基础知识(1)

    一.基础 模式定义了数据如何存储.存储什么样的数据库以及数据如何分解等信息,数据库和表都有模式.关于数据库的模式可以参考这里:https://blog.csdn.net/liaohong940908/ ...