Android第一次app总结

  • 点击按钮弹出提示对话框:

在按钮监听器中的重载onClick方法里面直接

new AlertDialog.Builder(QuizActivity.this)
.setMessage("You Got A Score Of : "+s)
.setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                       ;
                    }
                }).show();

注意:这里不能用

AlertDialog.Builder builder=new AlertDialog.Builder(this,1);

会报错说不能在监听器中 这样用,我也不知道为啥( ⊙o⊙?)

 

 

  • 保存状态saveInstanceState.xxx.(KEY,OBJECT),KEY是关键字,OBJECT是保存的对象,KEY是用于恢复OBJECT的,如 :
private short answers[]=new short[LENGTH];
private static final String KEY_ANSWER="answer";

saveInstanceState.putShortArray(KEY_ANSWER,answers);
//保存answers数组


if(savedInstanceState!=null)
        {
            answers=savedInstanceState.getShortArray(KEY_ANSWER);
        }
//恢复answers数组,用于onCreate中或者onRestoreInstanceState()

 

 

  • 保留小数 
double d = 123.456
NumberFormat nf = NumberFormat.getNumberInstance();

// 保留1位小数
nf.setMaximumFractionDigits(1); 

// 四舍五入RoundingMode.UP
nf.setRoundingMode(RoundingMode.UP);

System.out.println(nf.format(d));

 

  • 设置app图标

Android→app →manifests→AndroidManifest.xml中修改Application中的icon为 自己的图片资源即可 

 

 

 

 

 

 

  • 只声明了一个变量如ArrayList<Question> mQuestionBank;

    可以将其它返回值为ArrayList<Question>的函数返回值赋给它,但是若是想使用ArrayList的add、addAll等方法则必须初始化,也就是必须将其实例化:ArrayList<Qeustion> mQuesitonBank=new ArrayList<Question>();之后才能使用。
  • 想让某段 代码仅仅在某个Activity中执行一次,可设置一个全局变量标识并设置初始值,在oncreate中判断如果该变量仍然是初始值说明 该代码没有执行过,则执行并且改变标识变量值,即达到了让其仅执行一次的效果。
  • ArrayList使用的一些坑:
  1. ArrayList默认创建的容量(size())是0,所以,如果 创建了一个空的ArrayList  arr后,直接使用arr.set(int index,value)或者arr.get(int index)时会报数组越界错误,所以,如果仅仅想添加一个值,应该使用arr.add(int index,value),若想设定指定位置的值,则必须将arr初始化:例如,在onCreate中利用循环和一个容量值c,将arr前c个全部初始化为null:
    int c=SOME_VALUE;
    for(int num=0;num<c;num++)
            {
                arr.add(num,null);
            }

     

  2.  ArrayList的add(int  index,value )方法也有坑,先看看以下代码:
    import java.util.ArrayList;
    
    class Untitled {
    	public static void main(String[] args) {
    		
    		ArrayList <Integer> arr=new ArrayList<Integer>();
    		arr.add(0,520);
    		arr.add(1,250);
    		arr.add(2,100);
    		arr.add(0,520);
    		arr.add(0,520);
    		arr.add(0,520);
    		for(int i=0;i<arr.size();i++)
    		{
    			System.out.println(arr.get(i));
    		}
    	}
    }

    这儿只用了只在三个位置用了add,然而,输出结果 却是

    520
    520
    520
    520
    250
    100
    

    可以看到,后面3个语句在位置0处重复add了520, 结果这三个520没有把原先有值的0处替换掉,而是在0位置后面插入了进去,于是 位置1和2的值便被挤到了位置4和5。

 

 

 

 

  • 在两个Activity: A_Activity、B_Activity之间传递一个ArrayList<SOME_CLASS>时 使用

    String NAME="SOME STRING";
    ArrayList<SOME_CLASS> arraylist={....};
    
    //发送arraylist
    intent.putExtra(NAME,arraylist);
    
    //接收arraylist
    ArrayList<SOME_CLASS> receive=(ArrayList<SOME_CLASS>)getIntent().getSerializableExtra(NAME);

    但是最重要的一点是:ArrayList盛放的这些元素的类SOME_CLASS必须实现Serializable接口,即在定义SOME_CLASS时:

    public class SOME_CLASS implements Serializable
    {
           .....
    }
    
    

     

     

  •  RadioButton是放在RadioGroup 中的,当点击了某一个RadioButton后,就代表整个RadioGroup组 状态是已经被选过的了, 要想让其恢复成 没有被选过的 状态,应该使用RadioGroup.clearCheck(),而不 应该用RadioButton.setChecked(boolean)或者RadioButton.setSelected(boolean),那样只是让RadioButton的选中勾消失,而事实上它仍然是选中的。
  •  设置某个控件的 颜色:
    mTrueButton.setBackgroundColor(Color.parseColor("#8CF390"));

    ""中是改颜色的html代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值