替换Manifest.xml,界面替换(动态布局、动态获取R文件)

获取AndroidManifest.xml中的package name (可以package来当判断条件):一个程序替换AndroidManifest.xml修改R文件就可以界面大换血了
if(getApplication().getPackageName().equals("com.wintone.plateid.free")){
            
        }else{
           
        }
如果上面的R.drawable.chinasafe_log不能引入,报错,
wintoneImage.setBackgroundDrawable (getResources().getDrawable
(getResources().getIdentifier("safeinfo1", "drawable", getApplication().getPackageName())) );



如何连R文件都不修改:

getResources().getIdentifier("activity_main", "layout", this.getPackageName())
有时候this.getPackageName()会报错,把this换成getApplication()就好了
用这个方法来代替R文件
R.后面是什么,方法第二个参数就填什么,头两个参数都是String类型,必须加""
第一个参数就是需要加载的名称、id
例:
R.id.button
getResources().getIdentifier("button", "id", this.getPackageName())
R.drawable.pag
getResources().getIdentifier("pag", "drawable", this.getPackageName())
。。。。。。

如果在view、adapter。。。。等其他类地方上面的引入R文件方法就不好用了getResources()方法只能在Activity类里使用
如果想在其他类使用,就要使用context
context.getResoutces().getIdentifier("activity_main" , "layout" ,congtext.getApplication().getPackageName() );
context.getResoutces().getIdentifier("activity_main" , "layout" ,congtext.getPackageName() );
有的类还是不可以,就把context强转成Activity
context.getResoutces().getIdentifier("activity_main" , "layout" ,((Activity)congtext).getApplication().getPackageName() );


注意!!!!!!:这个方法在switch case选择中不可用。
如果替换 
switch ( v .getId()) {
      case R.id. tackPic_btn_main:
              Intent intentTack = new Intent("chinasafe.bankCard.scan_camera");
              intentTack.putExtra("WTAPP", 10011);
               startActivity(intentTack);
          break;
    case R.id.其他按钮id:
              Intent intentTack = new Intent("chinasafe.bankCard.scan_camera");
              intentTack.putExtra("WTAPP", 10011);
               startActivity(intentTack);
          break;
};
就需要用:
if( v  == tackPic_btn_main ){
                       点击tackPic_btn_main 按钮事件。
                 }else if(v  == 初始化按钮名称,不是id){
                        点击其他按钮事件。
                };
来代替







你可能感兴趣的:(替换Manifest.xml,界面替换(动态布局、动态获取R文件))