变量在android活动中没有变化

变量在android活动中没有变化,android,Android,我在android项目中的活动有以下代码(我已将其简化): 公共类收藏夹扩展了活动实现 AdapterView.OnItemSelectedListener、ViewSwitcher.ViewFactory{ public static int[] b; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeat

我在android项目中的活动有以下代码(我已将其简化):

公共类收藏夹扩展了活动实现 AdapterView.OnItemSelectedListener、ViewSwitcher.ViewFactory{

public static int[] b;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);


    favorites_total_number = 0;
    // some code for change the favorites_total_number value

    b = new int[favorites_total_number];
    // some code for change values of b

 }

Globals global = new Globals(this);
public Integer[] mImageIds = global.build_favorite_list(b,favorites_total_number); 
// in previous line, b is not changed (but in onCreate method, I changed it)
public static int[] b;
public static int favorites_total_number;

// final SharedPreferences shared2 = this.getSharedPreferences("Prefs", Context.MODE_PRIVATE);

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     requestWindowFeature(Window.FEATURE_NO_TITLE);

    // show on gallery
    final SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
    favorites_total_number = 0;
    for(int x = 1; x < 401; x = x+1) {  // change for develope
        String each_subject = "subject_" + String.valueOf(x);
        Boolean channel = shared.getBoolean(each_subject, false);
        if(channel){
            favorites_total_number = favorites_total_number + 1;
        }
    }
    b = new int[favorites_total_number];
    int p=-1;
    for(int x = 1; x < 401; x = x+1) {  // change for develope
        String each_subject = "subject_" + String.valueOf(x);
        Boolean channel = shared.getBoolean(each_subject, false);
        if(channel){
            p=p+1;
            b[p] = x;
        }
    }
    // String str = String.valueOf(favorites_total_number);
    String str = String.valueOf(b[1]);
    Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
    // --

    setContentView(R.layout.gallery);


    mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
     mSwitcher.setFactory(this);
     mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
             android.R.anim.fade_in));
     mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
             android.R.anim.fade_out));

    Gallery g = (Gallery) findViewById(R.id.gallery);
     g.setAdapter(new ImageAdapter(this));
     g.setOnItemSelectedListener(this);

 }

public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
     mSwitcher.setImageResource(mImageIds[position]);
 }

public void onNothingSelected(AdapterView<?> parent) {
 }

public View makeView() {
     ImageView i = new ImageView(this);
     i.setBackgroundColor(0xFF000000);
     i.setScaleType(ImageView.ScaleType.FIT_CENTER);
     i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT,
     LayoutParams.MATCH_PARENT));
     return i;
 }

private ImageSwitcher mSwitcher;

public class ImageAdapter extends BaseAdapter {
     public ImageAdapter(Context c) {
         mContext = c;
     }

    public int getCount() {
         return mThumbIds.length;
     }

    public Object getItem(int position) {
         return position;
     }

    public long getItemId(int position) {
         return position;
     }

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView i = new ImageView(mContext);

        i.setImageResource(mThumbIds[position]);
        i.setAdjustViewBounds(true);
        i.setLayoutParams(new Gallery.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        i.setBackgroundResource(R.drawable.cartoon_1);
        return i;
     }

    private Context mContext;

}

// int[] b_0={1,2,3,5,6};
// int favorites_total_number_0=5;
Globals global = new Globals(this);
private Integer[] all_images = global.favorite_images_0;  
public Integer[] mThumbIds = global.build_favorite_list(all_images,b,favorites_total_number);    
public Integer[] mImageIds = global.build_favorite_list(all_images,b,favorites_total_number);  
}

我已经在onCreate方法中更改了b,但是当我使用b(在最后一行中)时,它没有更改。 我不能在其他地方为onCreate方法编写代码(必须编写代码,因为部分代码只在onCreate方法中运行)。 我该怎么做才能改变

完整代码:

公共类收藏夹扩展了活动实现 AdapterView.OnItemSelectedListener、ViewSwitcher.ViewFactory{

public static int[] b;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);


    favorites_total_number = 0;
    // some code for change the favorites_total_number value

    b = new int[favorites_total_number];
    // some code for change values of b

 }

Globals global = new Globals(this);
public Integer[] mImageIds = global.build_favorite_list(b,favorites_total_number); 
// in previous line, b is not changed (but in onCreate method, I changed it)
public static int[] b;
public static int favorites_total_number;

// final SharedPreferences shared2 = this.getSharedPreferences("Prefs", Context.MODE_PRIVATE);

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     requestWindowFeature(Window.FEATURE_NO_TITLE);

    // show on gallery
    final SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
    favorites_total_number = 0;
    for(int x = 1; x < 401; x = x+1) {  // change for develope
        String each_subject = "subject_" + String.valueOf(x);
        Boolean channel = shared.getBoolean(each_subject, false);
        if(channel){
            favorites_total_number = favorites_total_number + 1;
        }
    }
    b = new int[favorites_total_number];
    int p=-1;
    for(int x = 1; x < 401; x = x+1) {  // change for develope
        String each_subject = "subject_" + String.valueOf(x);
        Boolean channel = shared.getBoolean(each_subject, false);
        if(channel){
            p=p+1;
            b[p] = x;
        }
    }
    // String str = String.valueOf(favorites_total_number);
    String str = String.valueOf(b[1]);
    Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
    // --

    setContentView(R.layout.gallery);


    mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
     mSwitcher.setFactory(this);
     mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
             android.R.anim.fade_in));
     mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
             android.R.anim.fade_out));

    Gallery g = (Gallery) findViewById(R.id.gallery);
     g.setAdapter(new ImageAdapter(this));
     g.setOnItemSelectedListener(this);

 }

public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
     mSwitcher.setImageResource(mImageIds[position]);
 }

public void onNothingSelected(AdapterView<?> parent) {
 }

public View makeView() {
     ImageView i = new ImageView(this);
     i.setBackgroundColor(0xFF000000);
     i.setScaleType(ImageView.ScaleType.FIT_CENTER);
     i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT,
     LayoutParams.MATCH_PARENT));
     return i;
 }

private ImageSwitcher mSwitcher;

public class ImageAdapter extends BaseAdapter {
     public ImageAdapter(Context c) {
         mContext = c;
     }

    public int getCount() {
         return mThumbIds.length;
     }

    public Object getItem(int position) {
         return position;
     }

    public long getItemId(int position) {
         return position;
     }

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView i = new ImageView(mContext);

        i.setImageResource(mThumbIds[position]);
        i.setAdjustViewBounds(true);
        i.setLayoutParams(new Gallery.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        i.setBackgroundResource(R.drawable.cartoon_1);
        return i;
     }

    private Context mContext;

}

// int[] b_0={1,2,3,5,6};
// int favorites_total_number_0=5;
Globals global = new Globals(this);
private Integer[] all_images = global.favorite_images_0;  
public Integer[] mThumbIds = global.build_favorite_list(all_images,b,favorites_total_number);    
public Integer[] mImageIds = global.build_favorite_list(all_images,b,favorites_total_number);  
公共静态int[]b;
公共静态整数\u总数\u;
//final SharedPreferences shared2=this.getSharedPreferences(“Prefs”,Context.MODE\u PRIVATE);
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
//展览廊
最终SharedReferences shared=GetSharedReferences(“优先”,模式\私有);
收藏夹总数=0;
对于(intx=1;x<401;x=x+1){//develope的更改
String each_subject=“subject”+String.valueOf(x);
布尔通道=shared.getBoolean(每个主题,false);
中频(信道){
收藏夹总数=收藏夹总数+1;
}
}
b=新整数[收藏夹总数];
int p=-1;
对于(intx=1;x<401;x=x+1){//develope的更改
String each_subject=“subject”+String.valueOf(x);
布尔通道=shared.getBoolean(每个主题,false);
中频(信道){
p=p+1;
b[p]=x;
}
}
//String str=String.valueOf(收藏夹总数);
String str=String.valueOf(b[1]);
Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show();
// --
setContentView(R.layout.gallery);
mSwitcher=(图像切换器)findviewbyd(R.id.switcher);
mSwitcher.setFactory(本);
mSwitcher.setInAnimation(AnimationUtils.loadAnimation)(此,
android.R.anim.fade_in);
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation)(此,
android.R.anim.fade_out);
画廊g=(画廊)findViewById(R.id.Gallery);
g、 setAdapter(新的ImageAdapter(this));
g、 setOnItemSelectedListener(此);
}
已选择公共位置(AdapterView父视图、视图v、整型位置、长id){
mSwitcher.setImageResource(mimageId[position]);
}
未选择公共无效(AdapterView父级){
}
公共视图makeView(){
ImageView i=新的ImageView(本);
i、 setBackgroundColor(0xFF000000);
i、 setScaleType(ImageView.ScaleType.FIT_CENTER);
i、 setLayoutParams(新的ImageSwitcher.LayoutParams(LayoutParams.MATCH_父级,
LayoutParams.MATCH_PARENT));
返回i;
}
专用图像切换器;
公共类ImageAdapter扩展了BaseAdapter{
公共图像适配器(上下文c){
mContext=c;
}
public int getCount(){
返回mThumbIds.length;
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
ImageView i=新的ImageView(mContext);
i、 setImageResource(mThumbIds[position]);
i、 setAdjustViewBounds(真);
i、 setLayoutParams(新建Gallery.LayoutParams(
LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
i、 挫折资源(R.drawable.cartoon_1);
返回i;
}
私有上下文;
}
//int[]b_0={1,2,3,5,6};
//int favorites_total_number_0=5;
全局全局=新全局(此);
私有整数[]所有图片=global.favorite\u图片\u 0;
public Integer[]mThumbIds=global.build\u favorite\u列表(所有图片,b,favorites\u总数);
public Integer[]mImageIds=global.build\u favorite\u列表(所有\u图像,b,favorites\u总数);

}

根据您发布的代码,它看起来像这一行

public Integer[] mImageIds = global.build_favorite_list(b,favorites_total_number);
onCreate()
或任何其他方法之外,这意味着它将在
onCreate()
之前运行(在此处更改
b
的值)。请尝试将其移动到
onCreate()
中,然后查看是否得到所需的值

public static int[] b;
public Integer[] mImageIds;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);


    favorites_total_number = 0;
    // some code for change the favorites_total_number value

    b = new int[favorites_total_number];
    // some code for change values of b

   // moved the below lines inside onCreate()
   Globals global = new Globals(this);
   mImageIds = global.build_favorite_list(b,favorites_total_number);
 }

代码很复杂,我无法更改该行的位置(其他一些代码将被损坏)。该行是否超出了我所想的任何方法?如果是,它将在
onCreate()
中的任何内容之前运行。您需要解释为什么其他代码“将被损坏”如果您需要有关如何修复它的帮助。谢谢您的帮助。我编写了完整的代码(更新帖子),您可以看到它的结构。它会出什么问题,如果您像上面那样声明并初始化
mImageIds
,您的建议是正确的,它可以工作,没有问题(我测试了它)。谢谢codeMagic。