【发布时间】:2011-01-16 09:04:36
【问题描述】:
我的问题看起来很简单,但我无法在这里找到答案。
我在一个应用程序中有不同的活动。活动相互开始。 我有一个 “主屏幕” 显示所有不同的可用级别,用户点击一个级别并且该活动被午餐,当用户完成该级别时,他可以按后退按钮转到主屏幕并开始另一个级别。 当按下后退按钮时,我想再次重新绘制“主屏幕”,因为这次完成关卡的拇指将不同,以表明它已完成。
那么如何在按下后退按钮时重新绘制活动? (我想我应该在 Activity.onResume 方法中放一些代码) (我使用 SharedPreferences 来保存已完成关卡的状态)
主屏幕活动基本上是这样的:
/** 在第一次创建活动时调用。 */ 公共无效 onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 设置内容视图(R.layout.maps); SharedPreferences settings = getSharedPreferences((getResources().getString(R.string.PREFS_HI)),0);
/**/
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this,(settings.getBoolean("level_1_finished", false))));
/**/
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//Open the map which was clicked on, if there is one
if(position+1 > 1){
Toast.makeText(maps.this, "Level " + (position+1) + " is not yet available!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(maps.this, "Opening Level " + (position+1), Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(v.getContext(), Tutorial2D.class);
startActivity(myIntent);
}
}
});
}
ImageAdapter 然后使用布尔值 true/false 来选择图像的来源,要么是未完成的缩略图,要么是已完成的级别缩略图。
【问题讨论】:
-
您自己回答了您的问题,只需覆盖 onResume 并更新方法中的按钮。
-
“主屏幕”是一个在onCreate方法中创建的gridView。我想做这样的事情:@Override public void onResume(){ /* call onCreate here */ }
-
不要在 onResume 方法中调用 onCreate,这不是正确的做法。您只需要更新一个元素,而不是重新绘制所有视图。
-
@gulbrandr:@Konstantin:我添加了主屏幕活动的代码,请描述我应该如何重新绘制整个活动或仅重绘视图的某些部分。
标签: android android-activity draw redraw onresume