在Android中重新绘制一个Activity
我的问题看起来很简单,但我无法在这里找到答案。
我在一个应用程序中有不同的活动。活动相互启动。 我有一个“主屏幕”,显示所有不同的可用级别,用户单击某个级别并且该活动已启动,当用户完成该级别时,他可以按后退按钮转到主屏幕并开始另一个级别。 当按下后退按钮时,我想再次重新绘制“主屏幕”,因为这次已完成级别的拇指将有所不同,以表明它已完成。
那么如何在按下后退按钮时对活动进行重新绘制? (我想我应该在 Activity.onResume 方法中放置一些代码) (我使用 SharedPreferences 来保存已完成关卡的状态)
主屏幕活动基本上是这样的:
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(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 来选择图像源:未完成的缩略图或已完成的级别缩略图。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先将您的 GridView 对象作为类成员。然后重写 onResume() 方法,您可以在该方法中根据用户的操作重新设置网格视图适配器。
First put your
GridView
objet as a class member. Then override theonResume()
method in which you can re-set the grid view adapter based on what the user did.您应该使用
Activity
的 >startActivityForResult()
方法。基本上,您正在开始下一个活动,并在完成时询问请求的状态。在完成之前,它应该调用 setResult(允许您指定用户是否完成该级别)。调用它的 Activity(您的主屏幕)将具有其onActivityResult()
方法被调用。在此方法中,您可以根据需要更新视图。You should use the
startActivityForResult()
method of Activity. Basically, you are starting your next Activity, asking for the status of the request when it finishes. Just before it finishes, it should call setResult (allowing you to specify whether the user completed the level or not). The Activity that called it (your main screen) will have itsonActivityResult()
method called. In this method, you can update your Views as needed.