Android 开发中遇到的问题与解决方式

来源:互联网 发布:内存数据恢复软件 编辑:程序博客网 时间:2024/04/30 18:59
1.R.layout找不到已存在的布局文件(XML)
1)检查R文件中有没有生产对应的整型

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();
                }  
            }   
        }  
    }; 

0 0
原创粉丝点击