注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Android开发之八第一个Fragment程序及其遇到的问题  

2014-11-19 15:26:12|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Android开发之八第一个Fragment程序及其遇到的问题

上周末调试了一个Fragment小程序,因为急着回家,所以最后一些细节并没有弄明白,这周来了后电脑又莫名的挂掉了,直到昨天才基本启动可用,所以又接着调试了下这个小程序。

这里面一开始遇到了几个小问题,第一个是simple_list_item_activated_1android.R.id.text1这种Android自带的Layout的布局是如何使用的,新手就新手,这么简单的问题都搞不清楚,不过这也怪Android的帮助做得不好啊,要是微软,唉,被微软给惯坏了。

其实这个很简单,看一下相关的源码:

SDK/plateforms/<android-version>/data/res/layout里面看到这些预设的布局。其中simple_list_item_1.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>

<!-- ...... -->

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@android:id/text1" <!-- 对应控件的IDandroid.R.id.text1 -->

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:textAppearance="?android:attr/textAppearanceListItemSmall"

    android:gravity="center_vertical"

    android:paddingStart="?android:attr/listPreferredItemPaddingStart"

    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"

    android:minHeight="?android:attr/listPreferredItemHeightSmall"

/>

这里注意一下,?@的关系类似于C++头文件中包含使用双引号和尖括号的区别,问号基本使用的是自己的风格,而@使用的是系统的。

setListAdapter(new ArrayAdapter<BookContent.Book>(getActivity(),android.R.layout.simple_list_item_activated_1,

                                     android.R.id.text1,BookContent.ITEMS));

上面颜色加深和字体加粗的部分。其实这个看了帮助非常简单,前者指只有一个TextVeiw,当然如果simple_list_item_activated_1最后的1变成2,就意味着布局中有两个TextView。后面的那个红色的text1当然也就是指的相关的TextView控件了。

还是那句话,说清楚了,简单的出奇,不明白,就不知道是什么玩意儿。

第二个是相关的资源ID是不是可以随便改名字,经过今天调试发现,不光ID可以随意改(不是故意乱改啊),其实启动的时候儿启动项目名字都可以改。

第三个是string.xml中的字符串的作用。在写程序时引用R资源里的字符串发现有错误,经过分析才发现,要在这个文件中增加相应的字符串的设置,目的很简单,即可以减少重复操作又可以提供国际化的契机,一举几得。

第四个是为什么有两个AndoridMainfest.xml,这个是无意间发现在bin和主目录下都有这个xml文件,后来测试才知道,BIN下的那个文件不过是主目录下那个文件的映射,或者说是编译后自动拷贝过去的,改动了几个地方,发现一保存,BIN下的就自动映射成相同的,但是反过来改,则不行,这个其它语言中的配置基本类似,所以说无论语言怎么设计,看来短时间内不会有什么新的思想的技术的突破。

在调试程序的时候儿,还遇到了几个问题,就比如上面的说的,建立程序的时候儿名字和例程是不同的,然后改来改去,也不知道名字改成什么了。这样就出现了一个问题,Android是如何知道启动哪个Activity呢?很简单在AndroidMainfest.xml中的:

        <activity

            android:name="com.example.bookdetailfragment.SelectBookActivity"

            android:label="@string/title_book_list">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

这也是在前文中讲过的Action的隐式的调用方法(“Android开发之五几个基本的用法” http://fpcfjf.blog.163.com/blog/static/554697932014101242730588/)。这个也颇类似在C#Main函数中启动不同的窗体就改变不同的窗体的名字。

这里还遇到了一个有趣的问题,有必要说一说,在改变启动的主窗体时,觉得自动生成的Main_Activity.java这个没有什么用处,直接就删除了,然后发现几个Java类中引用的R中的资源都变红报错。再看Eclipse中的工程里R.java这个文件没有了

上网找了下原因,有说右键工程修复(Fix)一下,或者Clean再这样,但这里都没有什么作用。在论坛有人回了句说是不是Xml配置文件有错误,导致无法生成R文件,看了看,果然有一个资源引用不到,注释掉,正常生成R.java这个文件。

所以说新手学习一样新东西,类似这种简单的问题会层出不穷,其实没什么技术含量,就是欺侮你没用过。

由简入繁,初窥门径。

  评论这张
 
阅读(366)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017