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