写论文时目录里面标题太长,却没有自动换行,撑破了版面窘窘窘。
\tableofcontent
\section{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
用换行号\\是不行的,\protect\\或者\protect\linebreak或者\newline也一样没法用。
可供选择的解决办法是使用\section[xxx]{xxxxxxxxxxxxxxxxxxx}
其中中括号内是缩略标题,显示在目录;大括号内是长标题,显示在正文。
最简单的办法是检查是否用了\usepackage{hyperref}这个宏包,有用的话就用%注释掉,就OK了。
2012年5月30日星期三
自己动手,快速创建网站
1. 注册一个域名。最普遍的是.com结尾,找个大一点的网站买一个,一般20刀以内,我用的是goDaddy.com,后来发现namecheap.com更便宜,所以还是应该先货比三家。。。需要信用卡或PayPal或支付宝。注册完了后就可以在Whois里面查到了。
2.申请网络空间,有很多免费的。我用的是awardspace.com,是注册了很多家Free Web Hosting终于找到一家看上挺简单的,免费的容量不大,先将就着用吧。
3.在你的Web Hosting的帐户中Domain Manager里面添加你已经注册的域名。
4. 在你的域名注册的帐户中Nameserver里面将nameserver改成你的Web Hosting所提供的nameserver(与3的相同位置可以查到),这样,你的域名就指向你的网络空间了。
5.在你的Web Hosting的帐户中上传你的网页。最方便的是FTP上传,下一个FTP client,比如最常用的Filezilla。利用你的Web Hosting所提供的FTP username和password,就可以很方便地连接到你的站点,然后批量上传你做好的网页了。
6.慢慢鼓捣HTML和CSS吧!
后记:之前花了一天时间才建了个小小的本地站点,今天花了仨小时就让它上线了,作为小白好得意啊。
2.申请网络空间,有很多免费的。我用的是awardspace.com,是注册了很多家Free Web Hosting终于找到一家看上挺简单的,免费的容量不大,先将就着用吧。
3.在你的Web Hosting的帐户中Domain Manager里面添加你已经注册的域名。
4. 在你的域名注册的帐户中Nameserver里面将nameserver改成你的Web Hosting所提供的nameserver(与3的相同位置可以查到),这样,你的域名就指向你的网络空间了。
5.在你的Web Hosting的帐户中上传你的网页。最方便的是FTP上传,下一个FTP client,比如最常用的Filezilla。利用你的Web Hosting所提供的FTP username和password,就可以很方便地连接到你的站点,然后批量上传你做好的网页了。
6.慢慢鼓捣HTML和CSS吧!
后记:之前花了一天时间才建了个小小的本地站点,今天花了仨小时就让它上线了,作为小白好得意啊。
2012年5月23日星期三
如何让你开发的Android应用在手机上运行(适用Ubuntu)
开发了一个应用后,总要想在自己的手机上跑跑的,下面就说说怎么在实机上运行开发好的应用:
1.确认你手机的Android版本不低于你开发的平台所用的Android版本。如果没达到,就升级吧,官方的没有,小心刷机啊。
2.在你的手机里选择“设置->应用程序->开发”,把开发里的两个选项“USB调试”和“允许模拟地点”打上勾勾。
3.通过USB接口将手机连在电脑上。
4.确认已经连上后,在终端里敲入如下命令:
sudo gedit /etc/udev/rules.d/51-android.rules
sudo gedit /etc/udev/rules.d/51-android.rules
来创建一个51-android.rules文件,在这里我是用gedit文档的。
5.在这个空的51-android.rules文件添加
这样一句,保存。注意Vendor ID 注意对于不同品牌的手机是不一样的,见本文结尾处表。SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
6.在终端里敲入如下命令:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo chmod a+r /etc/udev/rules.d/51-android.rules
来运行这个文件。
7.运行/android-sdks/platform-tools中的可执行文件adb,查看以确认你的设备已连接并可用。
8.在Eclipse中选择你所要运行的Package,点击运行,(如果之前已经在虚拟机上运行过,如果没有需要选择Android Application)跳出一个框框,选择Choosing a running Android device中你的手机,点击OK。完成。
Company | USB Vendor ID |
---|---|
Acer | 0502 |
ASUS | 0b05 |
Dell | 413c |
Foxconn | 0489 |
Fujitsu | 04c5 |
Fujitsu Toshiba | 04c5 |
Garmin-Asus | 091e |
18d1 | |
Hisense | 109b |
HTC | 0bb4 |
Huawei | 12d1 |
K-Touch | 24e3 |
KT Tech | 2116 |
Kyocera | 0482 |
Lenovo | 17ef |
LG | 1004 |
Motorola | 22b8 |
NEC | 0409 |
Nook | 2080 |
Nvidia | 0955 |
OTGV | 2257 |
Pantech | 10a9 |
Pegatron | 1d4d |
Philips | 0471 |
PMC-Sierra | 04da |
Qualcomm | 05c6 |
SK Telesys | 1f53 |
Samsung | 04e8 |
Sharp | 04dd |
Sony | 054c |
Sony Ericsson | 0fce |
Teleepoch | 2340 |
Toshiba | 0930 |
ZTE | 19d2 |
2012年5月17日星期四
解决WARNING: Application does not specify an API level requirement!
这是个不太能注意到又很常见的问题:
WARNING: Application does not specify an API level requirement!
Device API version is xx (Android x.x)
解决方法:
在AndroidManifest.xml中
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.xxx">
下方加入一行:
<uses-sdk android:minSdkVersion="xx"/>
其中xx是API version的版本号,在上述WARNING的第二行的下划线处。
WARNING: Application does not specify an API level requirement!
Device API version is xx (Android x.x)
解决方法:
在AndroidManifest.xml中
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.xxx">
下方加入一行:
<uses-sdk android:minSdkVersion="xx"/>
其中xx是API version的版本号,在上述WARNING的第二行的下划线处。
2012年5月8日星期二
出现xxx cannot be resolved or is not a field问题的解决方案
这样的问题一般会在你的方法中引用resource中的场参数时出现,比如:
对于R.array有:array cannot be resolved or is not a field.
对于R.main有:main cannot be resolved or is not a field.
对于R.id有:id array cannot be resolved or is not a field.
要解决这个问题,首先看一下你的res文件夹中有没有这个场的定义,一般res中默认只有layout.main.xml, drawable.xxx和value.string.xml,需要自己添加一些你需要的xml文件。注意:一定要添加在恰当的位置比如说array.xml就应该在value这个文件夹下。
如果确认有,再检查一下res下面所有文件是否都无报错。如果res下某一个文件报错,比如main或者AndroidManifest,也会影响其他场不能正确被引用。
如果都没有错误,再检查一下在你的主程序中是否不小心引入了android.R如下:
import android.R
如果有,请删除。
如果还不行,可以尝试一下:Project ==> Clean ==> Check your project and press OK.
再不行的话,我也就没辙了。
对于R.array有:array cannot be resolved or is not a field.
对于R.main有:main cannot be resolved or is not a field.
对于R.id有:id array cannot be resolved or is not a field.
要解决这个问题,首先看一下你的res文件夹中有没有这个场的定义,一般res中默认只有layout.main.xml, drawable.xxx和value.string.xml,需要自己添加一些你需要的xml文件。注意:一定要添加在恰当的位置比如说array.xml就应该在value这个文件夹下。
如果确认有,再检查一下res下面所有文件是否都无报错。如果res下某一个文件报错,比如main或者AndroidManifest,也会影响其他场不能正确被引用。
如果都没有错误,再检查一下在你的主程序中是否不小心引入了android.R如下:
import android.R
如果有,请删除。
如果还不行,可以尝试一下:Project ==> Clean ==> Check your project and press OK.
再不行的话,我也就没辙了。
2012年5月4日星期五
怎样解决Android类中TabActivity已经deprecated的问题
在Android官网中有一个做Tab的sample,使用了TabActivity这个类。但在实际操作过程中,你会发现这个类现在已经被官方弃用了,程序中会有如下提示:
This class is deprecated.
New applications should use Fragments instead of this class; to continue to run on older devices, you can use the v4 support library which provides a version of the Fragment API that is compatible down to
再按照官网给出的代码运行这个本该含有几个Tab的项目时,几个Activity变成了几个独立的应用,而不是在一个应用的几个Tab里。
问题看上去是出在这个TabActivity上。(花了两天才发现不是这个问题,是在Android Manifest.xml中在每一个Activity中都加入了<intent-filter/>,修改了后只在主Activity中加这个tag就好了。)
2.装完之后,在你的project里面建立一个叫libs的文件夹,路径为XXXXX/libs,和src、res等文件夹并列的。
3.在android-sdks/extras/android/support/v4中找到android-support-v4.jar,复制到步骤2中的libs里面去。
4.在Eclipse的Package Explorer中找到XXXXX/libs/android-support-v4.jar,按右键点击Build path->Add to Build Path.
好了,现在就可以用这个更新的包里面的东东了,比如我们需要的Fragment这个类。然后我们要来看看FragmentTab.java是怎么用的。
http://wazai.net/2109
This class is deprecated.
New applications should use Fragments instead of this class; to continue to run on older devices, you can use the v4 support library which provides a version of the Fragment API that is compatible down to
DONUT
.再按照官网给出的代码运行这个本该含有几个Tab的项目时,几个Activity变成了几个独立的应用,而不是在一个应用的几个Tab里。
问题看上去是出在这个TabActivity上。(花了两天才发现不是这个问题,是在Android Manifest.xml中在每一个Activity中都加入了<intent-filter/>,修改了后只在主Activity中加这个tag就好了。)
- 于是先按照程序中的提示加入@SuppressWarnings("deprecation"),以便漠视Warning。再运行——当然是没效果。
- 接着打算按照上面的建议,用Fragment来代替TabActivity,那就得先装上这个最近才更新的包android-support-v4.jar,步骤如下:
2.装完之后,在你的project里面建立一个叫libs的文件夹,路径为XXXXX/libs,和src、res等文件夹并列的。
3.在android-sdks/extras/android/support/v4中找到android-support-v4.jar,复制到步骤2中的libs里面去。
4.在Eclipse的Package Explorer中找到XXXXX/libs/android-support-v4.jar,按右键点击Build path->Add to Build Path.
好了,现在就可以用这个更新的包里面的东东了,比如我们需要的Fragment这个类。然后我们要来看看FragmentTab.java是怎么用的。
- 除了这种方法呢,还可以直接让原本继承TabActivity的类来继承爷爷Activity,具体怎么做在下面两个帖子里有介绍:
http://wazai.net/2109
2012年5月3日星期四
怎样在Android的项目中加入新的Activity Class
在开发Android的应用时,往往需要建立多个窗口,对于每个不同的界面,使用不同的Activity class会更加方便。如何在已经创造的项目中加入新的Activity Class呢?
有两种方法:第一种是用Manifest Editor,这里暂且不提;第二种是在Eclipse里创建,非常简单:
在Eclipse菜单栏里点击File->New->Class,出来一个框框,在Source Folder里选择你准备把这个class放的位置,一般是XXXX/src,package就是之前创建Project里面的package啦,比如com.example.helloworld, Name就是你要建的这个Activity,比如AlbumsActivity,然后点Finish。
接下来,就会在Eclipse的Package Explorer里找到你新建的这个Activity,打开这个java的文件写入代码。
最后,在AndroidManifest.xml里面加入新建的Activity如下:
<activity
android:name=".AlbumsActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
OK.
有两种方法:第一种是用Manifest Editor,这里暂且不提;第二种是在Eclipse里创建,非常简单:
在Eclipse菜单栏里点击File->New->Class,出来一个框框,在Source Folder里选择你准备把这个class放的位置,一般是XXXX/src,package就是之前创建Project里面的package啦,比如com.example.helloworld, Name就是你要建的这个Activity,比如AlbumsActivity,然后点Finish。
接下来,就会在Eclipse的Package Explorer里找到你新建的这个Activity,打开这个java的文件写入代码。
最后,在AndroidManifest.xml里面加入新建的Activity如下:
<activity
android:name=".AlbumsActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
OK.
订阅:
博文 (Atom)