设置主布局文件,为根布局设置一个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. ASP.NET Core开源地址

    https://github.com/dotnet/corefx 这个是.net core的 开源项目地址 https://github.com/aspnet 这个下面是asp.net core 框架 ...

  2. DDD Code First 迁移数据实现EF CORE的软删除,值对象迁移配置

    感谢Jeffcky大佬的博客: EntityFramework Core 2.0全局过滤 (HasQueryFilter) https://www.cnblogs.com/CreateMyself/p ...

  3. 【转】MySQL表名大小写敏感导致的问题

    原文地址:https://blog.csdn.net/postnull/article/details/72455768 最近在项目中遇到一个比较奇怪的小问题.在开发过程中自己测试没有问题,但是提测后 ...

  4. 【UML】:时序图

    时序图表达了类之间调用关系,以及调用时序关系. Actor: 调用者实例化类的对象,执行者. Lifeline: 生命线,竖的虚线.上方方框是类名表示存在的时间,从上至下表示时间流逝.Lifeline ...

  5. 【UML】:类图

    1  实线/虚线 + 三角空心箭头: 继承extends:实线,三角空心箭头指向父类,子类指向父类,子类 is a 父类. 实现implements:虚线,三角空心箭头指向接口,类指向接口,类 实现 ...

  6. Info - Get technical information from the Internet

    Official Sites Overview / QuickStart Guide / Docs / E-books Community / Fourm / Blog Demo / Download ...

  7. golang 闭包求斐波那契数列

    题目是Go指南中的闭包求斐波那契数列 package main import "fmt" // 返回一个"返回int的函数" func fibonacci() ...

  8. 从用户浏览器输入url到用户看到页面结果的过程,发生了什么事情?

    1.域名解析 域名解析的过程:  1).查询浏览器自身DNS缓存 2).若上面没有查找到,则搜索操作系统自身的dns缓存 3).若上面没有找到,则尝试读取hosts文件 4).若上面没有找到,向本地配 ...

  9. MVC3学习:实现文章上一篇下一篇链接

    文章的显示都是通过id查询数据库来显示.但是文章会经常删除,因此id号可能不是连续的,所以上一篇下一篇文章,不能简单的做id加减法. 我的思路是:先将表格中所有文章的ID号全部放入一个数组中,如果文章 ...

  10. python使用(三)

    1.function_option.py2.function_code_option.py3.thread_option.py4.class_option.py5.threading_option.p ...