0

我的问题似乎很简单,但我无法在这里找到答案。

我在一个应用程序中有不同的活动。活动相互开始。我有一个“主屏幕”,显示所有不同的可用级别,用户单击一个级别并且该活动被午餐,当用户完成该级别时,他可以按后退按钮转到主屏幕并开始另一个等级。当按下后退按钮时,我想再次重新绘制“主屏幕”,因为这次完成级别的拇指将不同,以表明它已完成。

那么如何在按下后退按钮时重新绘制活动?(我想我应该在 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 来选择图像的来源,未完成的拇指或完成的水平拇指。

4

2 回答 2

0

您应该使用ActivitystartActivityForResult()的方法。基本上,您正在开始您的下一个活动,在完成时询问请求的状态。就在它完成之前,它应该调用 setResult(允许您指定用户是否完成了关卡)。调用它的活动(您的主屏幕)将调用它的方法。在这种方法中,您可以根据需要更新您的视图。onActivityResult()

于 2011-01-16T09:34:55.740 回答
0

首先将您的GridView对象作为班级成员。然后覆盖onResume()您可以根据用户所做的重新设置网格视图适配器的方法。

private GridView gridview;
@Override
protected void onResume() {
    super.onResume();
    gridview.setAdapter(/* your new ImageAdapter here */);
}
于 2011-01-16T11:20:35.060 回答