安卓初级开发中遇到的一些问题

一、出现的问题:就是无法使用getDrawable()来获得Drawable对象
Drawable drawable=circleImageView.getDrawable();
首先要要获取的图片是否在布局文件中:
/*此处注意了 ,因为是在另外的一个布局文件中的circleView所以需要首先得到该布局文件
* */
LinearLayout layout=(LinearLayout)getLayoutInflater().inflate(R.layout.circle_head,null);
CircleImageView circleImageView=(CircleImageView)layout. findViewById(R.id.circle_headd);

Drawable drawable=circleImageView.getDrawable();

我的布局文件不是在Main_activity中,而是在另外的一个circle_head布局文件中;所以需要先获取该布局文件,在从该布局文件findviewById().就可以了。
二、如何TextInputLayout在xml文件中设置hint的时候,没有显示的话;可以使用Java代码来调用setHint()设置。

三、FloatingActionButton不能放在Linerlayout内部,必须要放在CoordinatorLayout里面,;有时候可能遇到的就是自己明明设置了FAB在最低端,为什么FAB有一部分无法显示呢?其实要设置Toolbar不要让他移动即可,也就是不要设置app:layout_scrollFlags="scroll|enterAlways"就行,不要妄想着删除AppBarLayout来达到上述的目的。

四、为什么Tab不能充满整个屏幕?
第一检查你的TabLayout的宽度是不是设置成match_parent;
第二查看你的TabLayout的模式MODE是不是设置成了TabLayout.MODE_FILLED

四、当程序中需要连接网络处理数据的时候,必须开启一个新线程来处理联网操作;其次当通过联网来改变APP界面的时候,必须要使用Handler来处理动态更新界面的问题;

五、要使Toolbar左边的按键可行的话,必须要首先setSupportActionBar(toolbar);,再然后得到ActionBar来改变其Title和subtitle,以及颜色等等;要使左边指向按钮可用的话,首先必须要让其可见,然后再让其能用,可见:getSupportActionBar().setDisplayHomeAsUpEnabled(true);
能用:actionBar.setHomeButtonEnabled(true);
最后在 @Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}

@Override
public booleanonOptionsItemSelected(MenuItem item) {
if (item.getItemId()==android.R.id.home)
{
finish();
}
return super.onOptionsItemSelected(item);
}
}


六、要是使用了子线程来处理数据,但是某些数据又需要在主线程显示出来,此时必须要使用Handler来处理数据。

七、在android6.0之前要使用DatePicker的话,那么必须要将其时间实现设定要还有就是要将其datePickerMode="calender",如果是android6.0以上的则可以默认使用;其次在timePicker中android5.0之前要实现时间选择器的话,那么要将timepickerMode="spinner"才可以进行时间的选择;要是再安卓6.0以上可以直接使用

八、为什么NavigationView中的header中的组件不可以点击?


解决的方法是:
1:首先获取navigationview的布局:
navigationView=(NavigationView)findViewById(R.id.navigationView);
2:通过navigationview的布局得到header的布局
View headerview= navigationView.getHeaderView(0);

3:获取CircleImageView组件,并设计点击事件:
myheader = (CircleImageView) headerview.findViewById(R.id.main_header_pic);
myheader.setClickable(true);
myheader.setOnClickListener(new View.OnClickListener()

记住签完不能直接通过获取自己header的组件来直接设置点击事件
也就是说这样做是错的:
layout = (LinearLayout) getLayoutInflater().inflate(R.layout.layout_header, null);
myheader = (CircleImageView) layout.findViewById(R.id.main_header_pic);
myheader.setClickable(true);
myheader.setOnClickListener(new View.OnClickListener() {

九、在进行开发的时候,当设计到使用三个以上的fragment的时候,当你滑动fragment的时候,会将这些fragment缓存在内存中,要是你的某一个fragment是设置了一个定时器的话,或者是你想要某个frament想要显示一些动态的内容的话,那么就必须要将fragment在内存中只能保存2个或者一个。这样才不会至于你点击了第三个fragment的时候再点击第二个fragment的时候第一个fragment崩溃(假设第一个frament是用来动态显示内容的)

十、在安卓6.0中可能因为权限的问题无法创建目录,我们可以在grade文件中,将他的targetSdk设置在23之前
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值