需求场景: 在开发中遇到下面这样场景: 1.创建 Fragment A 显示.  这时栈的结构是: .Fragment A 2.创建 Fragment B 并 显示.  从下到上看,这时栈的结构是: 2.Fragment B 1.Fragment A 3.创建 Fragment C 并 显示.  从下到上看,这时栈的结构是: 3.Fragment C 2.Fragment B 1.Fragment A 那么,如何从 Fragment C 一次性跳到 Fragment A 呢? 实现: 入栈时,使…
Android开发:碎片Fragment完全解析   为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activity一样包含布局.Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个 Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题.Fragment 2包含了TextView和 ImageView,来显示书的详细内容和图片. AD:51CTO学院…
通常多pane的设计中,比如Fragment A是个Headline,Fragement B是detail,那么B通常需要实现A的点击事件的接口,这样子的话,两个fragment就高耦合了,而且需要在Fragment A中编写一个interface,如果Fragment很多,情景更复杂些,就乱了.   这里可以使用EventBus这个框架,一个典型的发布者-订阅者模式.具体可以参考: https://github.com/greenrobot/EventBus   使用方法大致如下:   这个例…
本文转载于 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragment 示例 : https://github.com/han1202012/Octopus-Fragement.git -- 可复用的 Fragment 示例 : https://github.com/han1202012/Octopus-Fragement_TwoModel.git 1. Fragement 概述 Fra…
0.  前言 在Android开发中经常会发生Activity的销毁重建,比如用户长时间接听一个电话后回到APP.在Android开发--Fragment知识整理(二)中我们提到了使用Fragment大量保存Activity销毁重建数据的方法,但是有一个问题是,在异步任务时旋转屏幕,如何处理异步任务呢?如果单纯的在Activity销毁之前关闭上一个异步任务,onPostExecute()中的关闭对话框就不会走了,会出现对话框无法关闭的现象:如果不关闭,可能会更新已经不存在的控件,造成错误,不仅如…
注明:这个转的,见谅未能标明原始出处 我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述. 但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常大,手机的界面放在平板上可能会有过分被拉 长.控件间距过大等情况.这个时候更好的体验效果是在Activity中嵌入"小Activity",然后每个"小Activity"又可以拥有…
android开发中最常用的控件之一就是listview,伴随listview还要有adapter和放入适配器的item.然后假设其中有一部分item的生成符合一定规律,Item item = new Item(jsonObject);那么就该考虑下用反射来生成这些元素了. 首先是item的代码 public class TestItem { public int id; public String image; public TestItem(JSONObject json) { try {…
通常开发Android的时候要使用到数据库操作,会遇到下面小问题: 数据库文件在哪?怎样訪问或操作? 能够通过:打开DDMS->File Explorer看到的sqlite数据库在eclipse,然后在文件夹/data/data/package_name/databases下找到. 可是我们仅仅能看到.db文件,根本看不到里面的表格数据,更别说操作数据啦. 当然,我们能够把.db文件导出来,用数据库操作工具(如SQLite Expert)来操作数据,这是不是非常麻烦呀,今天我们就能够用一个简单的…
新建的一个Fragment,被一个Activity使用,那么这个Activity需要继承一个接口: public class MainActivity extends Activity implements HistoryFragment.OnFragmentInteractionListener{ } 否则会被报错 java.lang.ClassCastException: com.livingspring.luchebao.MainActivity@4261c220 must impleme…
fragment触发事件后传递会给activity,可以通过在fragment中定义一个接口,让activity实现这个接口. 具体代码如下 public class AAFragment extends Fragment { private OnFragmentInteractionListener mListener; public void onButtonPressed(Uri uri) { if (mListener != null) { mListener.onFragmentInt…
#Fragment* 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容* 生命周期方法跟Activity一致,可以理解把其为就是一个Activity* 定义布局文件作为Fragment的显示内容 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(sav…
实现思路: 1.写一个父类布局,里面写一个按键和一个帧布局(用于给Fragment布局后续替代) 2.写3个子布局,并且在写3个class继承Fragment布局 3.在MainActivity的class中写替换碎片布局的方法 (包含:FragmentManger(碎片管理器).getSupportFragmentManager(得到支持碎片管理器).FragmenTransaction(碎片交换器).beginTransaction(开始碎片交换).replace(替换).commit(交付…
先说说我的使用场景: 我写了一个activity,使用了actionbar. 在这个activity中,有fragment,默认先打开一个 homeFragment,点击某个按钮会进入 detailFragment. 当启动detailFragment 时,问题出现了: 我希望在detailFragment 打开时,actionbar出现 返回的箭头  "<" . 于是我在onStart中写下: @Override public void onStart() { super.on…
最近在使用AIDL做IPC的时候,在处理复杂的数据类型的时候,编译器总是报couldn't find import for class错误,所以在这里总结下AIDL使用的时候的一些注意事项,希望对你能有所帮助. Android 中进程间通信使用了 AIDL 语言,但是支持的数据类型有限: 1.Java的简单类型(int.char.boolean等).不需要导入(import). 2.String和CharSequence.不需要导入(import). 3.List和Map.但要注意,List和M…
在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题.解决方法,有两种,一是把AlertDialog换成Dialog,但这么一来,对话框的最外层会多出一个框,顶部还会空几十个DP,当然可以用setBackgroundDrawable(new ColorDrawable(0))把背景设为透明,隐藏掉边框,但是上面空着的几十个DP还在,对话框就不是在屏幕居中了.代码: Dialog ad = new Dialog(cont…
当我们学完java中多线程的下载后,可以将它移植到我们的安卓中来,下面是具体实现源码: DownActivity.java package com.example.downloads; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.MalformedURLException; i…
android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问 "properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table inthe checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOC…
前言 在Android里获取视频的信息主要依靠MediaMetadataRetriever实现 获取最佳视频预览图 所谓的最佳就是MediaMetadataRetriever自己计算的 /** * 获取视频缩略图 * @param vedioFile * @return */ public static Bitmap getVedioThumbnail(File vedioFile){ if (!vedioFile.exists()){ L.e("视频文件不存在"); return n…
/** * 将bitmap中的某种颜色值替换成新的颜色 * @param bitmap * @param oldColor * @param newColor * @return */ public static Bitmap replaceBitmapColor(Bitmap oldBitmap,int oldColor,int newColor) { //相关说明可参考 http://xys289187120.blog.51cto.com/3361352/657590/ Bitmap mBi…
一.发现问题 先看两种方法插入数据 public void save(Person p){ SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("insert into person(name,phone) values (?,?)", new Object[] { p.getName(), p.getPhone() }); db.close();} public void save(Person p){ SQL…
一.言简意赅 fill_parent 是让控件宽或者高占全屏 wrap_content是让控件的高或宽仅仅把控件里的内容包裹住而不是全屏 二.分别来看  1 fill_parent 设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间.这跟Windows控件的dockstyle属性大体一致.设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕. 2  wrap_content 设置一个视图的尺寸为wrap_content将强制性地使视图…
是不是弄了半天你的Fragment老是Replace不了,我的原因是:弄成静 态的,然后要动态Replace,竟然不行,后来框个FragmentLayout,改成全动态添加和Replace,OK了.…
之前一直都是这么写的 pageViewModel = ViewModelProviders.of(this).get(PageViewModel.class); //参数this是当前fragment 后来发现,这么写,问题很大== 当我们使用ViewPager(或ViewPager2)时,在Fragment重建后,ViewModel会被重新创建(与Fragment重建前的ViewModel不是同一个) 后来我改成了这样 pageViewModel = ViewModelProviders.of…
1.EditText有焦点(focusable为true)阻止输入法弹出 editText=(EditText)findViewById(R.id.txtBody); editText.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘 return fa…
1.由于市场上大多数教程是基于Eclipse,而AndroidStudio显然是大势所趋,所有我在电脑上同时搭建了两个IDE,直接在官网下载AndroidStudio比较好,因为SDK,AVD都集成了,不用单独配置,当然了,这得FQ. 2.安装了AndroidStudio,配置Eclipse就十分方便了,Eclipse就是一个IDE,并没有集成SDK,AVD,这时候就可以直接利用安装AndroidStudio时的SDK,AVD了,这样节省了不少时间和系统存储空间. 3.更新SDK和配置AVD,不…
textview实现高亮显示,带下划线,带背景,主要是通过SpannableString类实现. 具体实现请看代码: TextView showMoreContent=(TextView)findviewbyid(R.id.showMoreContent); SpannableString span= span.setSpan(new ForegroundColorSpan(Color.RED), 0, showMoreContent.getText().toString().length(),…
Activity中常用的获取屏幕像素代码: //获取屏幕像素相关信息 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); 在开发时,我使用的fragment继承自android.support.v4.app.Fragment,getWindowManager()这个 方法在fragment中并没有该方法, 因为只有继承自Activity才包含该方法,那么在…
要在activity里面去接受,然后传递给fragment对象,fragment有很多回调调用不到 你的设备有摄像头吗? 为了确保市场上的大多数设备都能运行你的程序,必须在项目中做一些检测,保证使用的设备可以执行你的代码. 我们可以这么做: 在程序的配置清单文件中标明要求使用摄像头: 在代码中用PackageManager进行设备功能检测: 在项目的androidManifest文件中添加使用摄像头权限 android.hardware.camera (在一个Fragment中)用Package…
0.  前言 Android开发中的Fragment的应用非常广泛,在Android开发--Fragment知识整理(一)中简单介绍了关于Fragment的生命周期,常用API,回退栈的应用等知识.这篇将着重于介绍Fragment和Activity之间的通信以及使用Fragment保存Activity数据销毁时数据的一些知识. 1.  Fragment与Activity的通信 Fragment是依附于Activity存在的,因此两者之间的通信在所难免.比如Fragment不能响应Intent打开…
1:前言: 我们在Android开发的过程中,很多实现是要向远程服务器拿数据的,但是未必当前设备一定连接了网络啊,那么此时我们就是要进行判断的了, 如果是有网络的话,那么此时就去向远程服务器去拿数据,如果是没有网络的话,给用户一个小小的温馨提示,同时为了用户的体验感友好,没有网络的 时候可以向本地的SQLite的数据库区拿数据.(等到有网的时候,SQLite数据库的数据需要马上的更新). 现在我们开始进行演示如何判断当前设备是否连接网络. 2:New 一个安卓Android项目 默认的Activ…