2012-10-24 3 views
2

레벨로 나누어 진 간단한 안드로이드 게임을 개발 중입니다. 해당 레벨이 완료되면 레벨 아이콘 옆에 체크 아이콘 (ImageView)을 표시하고 싶습니다. 메뉴를 선택 활동 수평을 반환 한 후버튼을 누른 후 다른 활동에서 ImageView 가시성을 변경하는 방법은 무엇입니까?

final EditText level1editText=(EditText)findViewById(R.id.level1editText);   
    Button level1completeButton=(Button)findViewById(R.id.level1completeButton); 

    level1completeButton.setOnClickListener(new View.OnClickListener() 
     public void onClick(View v) 
     { 
      final String edittext=level1editText.getText().toString(); 

      if(edittext.trim().equals("Complete level")) 
      { 

       { 
       Intent visible1 = new Intent(); 
       visible1.putExtra("iconvisible",0); 
       startActivity(visible1); 

        { 
         LayoutInflater inflater = getLayoutInflater(); 
         View view = inflater.inflate(R.layout.activity_level1completed, 
         (ViewGroup) findViewById(R.id.img11_toast)); 

       Toast toast = new Toast(Level1Activity.this); 
       toast.setView(view); 
       toast.show(); 

       { onBackPressed(); { 

         return; 
        } 


      } 

      } 
      else 
      { 
        Toast.makeText(Level1Activity.this, 
        "Type Complete level.", Toast.LENGTH_LONG).show(); 
      } 

그리고 : (InsideLevelActivity) 다음과 같이 레벨은, 버튼을 누르면 완료됩니다. 내가 this one (how to pass data between two activities)을 포함하여 지난 며칠을위한 많은 방법을 시도했습니다

ImageView logocheckicon1=(ImageView)findViewById(R.id.logocheckicon1); 
logocheckicon1.setVisibility(View.GONE); 

Intent visible1 = getIntent(); 
int state = Integer.parseInt(visible1.getExtras().get("iconvisible").toString()); 
complete1.setVisibility(iconvisible); 

: 나는 데이터를 이런 식으로 (LevelMenuActivity)를 검색하기 위해 노력하고있어. 나는 체크 아이콘 (ImageView)을 보이지 않게 만들고 다시 보려고 시도했다. this way.

또한 완료된 모든 레벨 옆에 동일한 체크 아이콘이 나타납니다. 동일한 Drawable의 10 가지 ID를 만들지 않고 하나의 ImageView만으로이 작업을 수행 할 수 있습니까?

미리 감사드립니다.

편집 : 내가 충분히 명확하지 않은 경우 사과드립니다. 예를 들어 MainActivity에있는 이미지의 가시성을 다른 작업의 버튼 내부에있는 의도로 변경하는 방법이있었습니다. 답변 해 주셔서 감사합니다.

EDIT2 : 다른 시도가 실패한 코드가 추가되었습니다.

+0

해당 레벨 목록에 listview를 사용합니까? 그렇지 않다면, 왜? – sandrstar

답변

1

하나의 활동에서 다른 활동으로 이미지를 전달하십시오. 먼저 이미지를 비트 맵으로 변환 한 다음 base64로 변환 한 다음 인 텐트를 통해 전달하거나 공유 환경 설정을 저장합니다.

public boolean saveImage(Context context, Bitmap realImage) { 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
     byte[] b = baos.toByteArray(); 

     String encodedImage = Base64.encodeToString(b, Base64.DEFAULT); 

    } 

그런 다음 당신은 의도을 통해 이미지를 전달할 수

public Bitmap getFacebookImageBitmap(Context context) 
{ 
    Bitmap bitmap = null; 

    String saveimage=from intent or share-preference string. 
    if(!saveimage.equalsIgnoreCase("")){ 
      byte[] b = Base64.decode(saveimage, Base64.DEFAULT); 
      bitmap = BitmapFactory.decodeByteArray(b, 0, b.length); 

     } 
    return bitmap; 
} 

감사

1

을 의도 통해 다른 활동에이 이미지를 사용하거나 공유 환경에서 얻을. 먼저 이미지를 바이트 배열로 변환하고 의도와 함께 보내십시오.

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);  
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
byte[] b = baos.toByteArray(); 

Intent intent = new Intent(this, ActivityB.class); 
intent.putExtra("picture", b); 
startActivity(intent); 

다음 avtivity에서이 이미지를 검색 할 수 있습니다.

Bundle extras = getIntent().getExtras(); 
byte[] b = extras.getByteArray("picture"); 

Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); 
ImageView image = (ImageView) findViewById(R.id.imageView1); 

image.setImageBitmap(bmp); 

희망이 도움이 될 것입니다.

관련 문제