-
这个图还是比较重要的。查看全部
-
Activity和Fragment之间的通信(静态方式) 1. 通过FragmentManager类的findFragmentById()获取对应的Fragment类,然后调用对应Fragment中的方法实现传值。 (1)Activity的布局: <fragment android:id="@+id/frag" android:name="com.example.fragment.MyFragment" android:layout_width="wrap_content" android:layout_height="wrap_content"/> (2)Activity的java实现中 FragmentManager fragmentManager = getFragmentManager(); MyFragment fragment = (MyFragment) fragmentManager.findFragmentById(R.id.frag); //findFragmentById()返回的是Fragment类,需要强转。 (3)对应MyFragment中方法的实现 private String mResponse; public String getmResponse() { return mResponse; } public void setmResponse(String mResponse) { this.mResponse = mResponse; } (4)Activity的java文件中调用方法 fragment.setmResponse("xzhang76"); (5)对应MyFragment中获取数据 String message = getmResponse(); 这里有一点需要注意: 不要在MyFragment中的onCreateView()中获取传递来的数据,因为在Activity中的setContentView()时MyFragment的onCreateView()就已经执行了,所以是这时获取不到数据。查看全部
-
Fragment和Activity的通信(动态) 1. Fragment通过getActivity()来获得它所在的Activity 3. Activity->Fragment: 在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法将数据包传递进去;在Fragment中调用getArguments()获取数据包 Acitivty中: MyFragment5 myFragment5 = new MyFragment5(); Bundle bundle = new Bundle(); bundle.putString("name", message); //"name"为对应的key,message是传递的string myFragment5.setArguments(bundle); //发送数据给myFragment5 对应的MyFragment5中: Bundle bundle = getArguments(); //获取bundle数据包 String message = bundle.getString("name")+""; //把“name”key对应的value拿出来 mTV.setText(message); 4. Fragment->Activity: 需要在Fragment中定义一个内部回调接口,再让包含它的Activity实现该回调接口。这样Fragment中可调用该回调方法将数据传递给Activity。 (1)Fragment中定义一个内部回调接口 public interface MyListener { public void response(String reponseString); } (2)Activity中实现该方法 MainActivity4 implements MyListener { public void response(String reponseString) { mTV.setText(reponseString); } } (3)Fragment中回调MainActivity4中的该方法 ((MyListener) getActivity()).response(responseString);查看全部
-
android:numColums 每一行显示多少列 android:horizontalSpacing 两列之间的间距 android:verticalSpacing 两行之间的间距查看全部
-
进度条风格查看全部
-
Fragment声明周期 1. 启动Fragment onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume() 2. 屏幕锁屏 onPause()->onStop() 3. 屏幕解锁 onStart()->onResume() 4. 切换其他Fragment 前一个Fragment: onPause()->onStop()->onDestoryView()->onDestory()->onDetach() 后一个Fragment: onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume() 5. 回到桌面 onPause()->onStop() 6. 回到应用 onStart()->onResume() 7. 退出Fragment onPause()->onStop()->onDestoryView()->onDestory()->onDetach()查看全部
-
Fragment 1. 对Fragment进行添加、移除、替换,以及执行其他动作,提交给activity的每一套变化被称作一个事务。 每一个事务都是执行一套变化,可以在一个事务中设置你所有想执行的变化,然后提交给activity,必须调用commit()方法。 2. 动态加载Fragment (1)自定义一个Fragment,指定其布局文件 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_main, container, false); //fragment_main是对应的布局 textView = (TextView) view.findViewById(R.id.textView); textView.setText("动态加载"); return view; } (2)创建一个自定义Fragment的实例,并开启一个事务 MyFragment2 fragment2 = new MyFragment2(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction beginTransaction = fragmentManager.beginTransaction(); beginTransaction.add(R.id.dongtaiFragment, fragment2); beginTransaction.addToBackStack(null); //允许按back键返回 beginTransaction.commit();查看全部
-
ctrl+鼠标左键查看快捷键查看全部
-
组件:图标,标题,主题样式(面向全局)。只能包含一个application节点 Activity:全名书写方式name:全名书写方式,(包名加类名);每一个activity必须在配置文件里定义。 Service:每个Service服务必须添加一个标签; Conteent Provider(内容提供者):管理数据库访问以及程序内核程序间共享; Broadcast Receive(广播接受者):全局事件监听器;面向全局。查看全部
-
Fragment 1. Fragment可以作为activity界面的一部分组成出现 2. 可以在一个activity中同时出现多个fragment,并且一个fragment也可以在多个activity中使用 3. 在activity运行过程中,可以添加、移除或替换fragment 4. fragment可以响应自己的输入事件,并且有自己的生命周期,但是其生命周期会受宿主activity的生命周期影响。 5. 创建Fragment onCreateView(),Fragment第一次绘制其用户界面的时候,系统会调用这个方法。 必须返回一个View,如果没有UI界面,返回null即可 6. 静态加载方式 (1)activity的layout布局中的android:name属性指定了在layout中实例化的Fragment类 <fragment android:id="@+id/fragment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:name="com.example.fragment.MyFragment"/> (2)将layout转换成一个View对象 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /* * resource: fragment需要加载的布局文件 * root: 加载layout的父ViewGroup * attachToRoot: bool值,false->不返回父ViewGroup */ View view = inflater.inflate(R.layout.fragment_main, container, false); textView = (TextView) view.findViewById(R.id.textView); textView.setText("静态加载"); return view; } (3)在R.layout.fragment_main可以定义自己的页面布局查看全部
-
WebView 1. 使用一个对话框来显示正在加载的页面进度 webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { // TODO Auto-generated method stub if(newProgress == 100) { //关闭progress dialog closeDialog(); } else { //网页正在加载,显示进度条Progress dialog openDiagProgress(newProgress); } } //下面就是实现两个closeDialog()和openDialogProgress() 2. 缓存 webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //使用cache webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //不使用cache查看全部
-
WebView 1. 简单的使用系统浏览器打开 uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); 2. WebView加载页面 webView.loadUrl(url); 获取焦点 webView.requestFocus(); 3. 使用应用中的webview webView.loadUrl(url); webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; // return super.shouldOverrideUrlLoading(view, url); } }); 这里WebViewClient帮助WebView处理一些页面控制和请求通知 4. 启用javaScript WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); 5. 返回上一个页面 public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { if(webView.canGoBack()) { webView.goBack(); return true; } else System.exit(0); } //return super.onKeyDown(keyCode, event); }查看全部
-
ViewFlipper手势滑动查看全部
-
使用ViewStub惰性加载 作用:ViewStub标签同include标签一样可以用来引入一个外部布局,不同的是ViewStub引入的布局默认不会扩张,既不会占用显示,也不会占用位置,从而在解析layout时节省cpu和内存查看全部
-
使用merge合并UI布局 作用:合并Ui布局,使用该标签能降低UI布局的嵌套层次 场景一:布局根节点是FrameLayout且不需要设置background或padding等属性,可以用merge代替 场景二:莫布局作为自布局被其他布局include是,使用merge当做该布局的顶节点,这样在被引入时顶节点会自动被忽略查看全部
举报
0/150
提交
取消