2011-01-16 9 views
0

내 문제는 단순 해 보이지만 여기서 답을 찾을 수는 없습니다.안드로이드에서 액티비티를 다시 그릴 때

한 가지 응용 프로그램에서 다른 활동이 있습니다. 활동이 서로 시작됩니다. "주 화면"은 사용 가능한 모든 수준을 표시하고 사용자가 한 수준을 클릭하면 그 활동이 점심을 먹으며 사용자가 그 수준을 완료하면 뒤로 단추를 눌러 주 화면으로 이동할 수 있습니다 다른 레벨을 시작하십시오. 다시 버튼을 누르면 "주 화면"을 다시 그리기를 원합니다. 이번에는 완성 된 레벨의 엄지 손가락이 다르기 때문에 완료되었음을 나타냅니다.

그렇다면 뒤로 버튼을 눌렀을 때 액티비티에 다시 그리기를 실행하려면 어떻게해야합니까?

 
    /** 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); } } }); }

: 이

메인 화면 활동 (I 완료 수준의 상태를 저장 된 SharedPreferences를 사용) (나는 내가 Activity.onResume 방법에 약간의 코드를 삽입해야 가정)은 기본적으로 이것이다

ImageAdapter는 boolean true/false를 사용하여 미완성 된 엄지 손가락이나 완성 된 레벨 엄지 손가락의 이미지 소스를 선택합니다.

+1

귀하가 직접 질문에 답변했으며, onResume을 재정 의하여 메소드의 버튼을 업데이트하십시오. –

+0

"주 화면"은 onCreate 메서드로 만든 gridView입니다. 나는 같은 것을 할 싶습니다 : – theAlse

+0

당신의 onResume 방법에서 onCreate를 호출하지 않는, 이것은 옳은 방법이 아니다 @Override 공공 무효 onResume() {/ * \t은/* 여기에서 onCreate 호출} 그것. 모든 요소를 ​​다시 그리지 않고 한 요소 만 업데이트하면됩니다. – gulbrandr

답변

0

먼저 GridView objet 클래스를 구성원으로 지정하십시오. 그런 다음 사용자가 수행 한 내용에 따라 그리드보기 어댑터를 다시 설정할 수있는 onResume() 메서드를 재정의하십시오.

private GridView gridview; 
@Override 
protected void onResume() { 
    super.onResume(); 
    gridview.setAdapter(/* your new ImageAdapter here */); 
} 
+0

onResume() 메서드를 구현 한 방법을 의사 코드 또는 Java로 표시 할 수 있습니까? – theAlse

+0

@Alborz : 답변이 업데이트되었습니다. – gulbrandr

+0

그게 정확히 내가 뭘 필요했는지, 덕분에 gridView.setOnItemClickListener (new OnItemClickListener() { " onResume에서 gridView가 업데이트되었으므로 다시 수행해야합니까? – theAlse

0

startActivityForResult() 방법을 Activity으로 사용해야합니다. 기본적으로 다음 액티비티를 시작하면서 요청이 완료 될 때 요청 상태를 묻습니다. 완료 직전에 setResult를 호출하여 사용자가 레벨을 완료했는지 여부를 지정할 수 있습니다. 그것을 호출 한 활동 (기본 화면)은 onActivityResult() 메서드가 호출됩니다. 이 방법에서는 필요에 따라 뷰를 업데이트 할 수 있습니다.

+0

무슨 뜻인지 알 겠어. onActivityResult()는 해당 활동의 onCreate 메소드를 호출 할 수 있습니다. (모든 것이 onCreate 메소드에서 수행되기 때문에) – theAlse

+0

안됩니다. onCreate 메서드는 Activity가 메모리에서 덤프 된 후 처음로드되거나로드 될 때만 호출되도록 설계되었습니다. onActivityResult 호출에서 UI (또는 UI 뒤에있는 어댑터)를 직접 업데이트해야합니다. –