2)是不是复制的时候把android.R文件导入了,而没有把自己项目的R文件导入进来,所以删除android.R文件,重新导入一下cmmand+shift+o
2.LinearLayout中组件右对齐
在LinearLayout中,如果将其定位方向设为横向排列:android:orientation="horizontal",那么这个布局中的控件将自左向右排列。
但有时会有这样的情况:行的左边有两个控件的同时,行的右边也有一个控件。
我们可以将右边的控件放在另一个LinearLayout中,同时将其对齐方式设为右对齐:android:gravity="right",还有一点, 这个LinearLayout的宽度设为充满父控件: android:layout_width="fill_parent"。这样就行了。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="左边1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="左边2" />
<!-- 将TextView包在另一个LinearLayout中
注意android:layout_width和android:gravity这两个属性
-->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="右边" />
</LinearLayout>
</LinearLayout>
3.android Activity之间传递数据
Intent(今天遇到的问题就是传递的数据太大,B页面无法启动,也就是传递失败)
1)直接传递,intent.putExtra(key, value)
(2)通过bundle,intent.putExtras(bundle);
(1)这两种都要求传递的对象必须可序列化(Parcelable、Serializable)
(2)Parcelable实现相对复杂
(3)关于Parcelable和Serializable,官方说法:
Serializable: it's error prone and horribly slow. So in general: stay away from Serializable if possible.
也就是说和Parcelable相比,Seriaizable容易出错并且速度相当慢。
(4)通过intent传递数据是有大小限制滴,超过限制,要么抛异常,要么新的Activity启动失败,所以还是很严重的啊
// 单例
public static class DataHolder {
private List<DaliyProblemsModel> data;
public List<DaliyProblemsModel> getData() {return data;}
public void setData(List<DaliyProblemsModel> data) {this.data = data;}
private static final DataHolder holder = new DataHolder();
public static DataHolder getInstance() {return holder;}
}
A页面设置数据DataHolder.getInstance().setData(the_question_list);
B页面拿数据the_quesition_list = DataHolder.getInstance().getData();
4.android 监听HOME以及MEUN键
//注册广播
registerReceiver(mHomeKeyEventReceiver, new IntentFilter(
Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
/**
* 监听是否点击了home键将客户端推到后台
*/
private BroadcastReceiver mHomeKeyEventReceiver = new BroadcastReceiver() {
String SYSTEM_REASON = "reason";
String SYSTEM_HOME_KEY = "homekey";
String SYSTEM_HOME_KEY_LONG = "recentapps";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_REASON);
if (TextUtils.equals(reason, SYSTEM_HOME_KEY)) {
if(isending){
showResult();
}
}else if(TextUtils.equals(reason, SYSTEM_HOME_KEY_LONG)){
//表示长按home键,显示最近使用的程序列表
if(isending){
dialog();
}
// showResult();
}
}
}
};