2011-02-10 9 views
0

이미지를 전체 화면으로 표시하고 선택 및 취소 단추가있는 사용자 지정 대화 상자를 만들려고합니다. 이 사용자 지정 대화 상자는 사용자가 전체보기에서 선택한 이미지를 볼 수 있도록 이미지를 클릭 할 때 표시되어야합니다. 이미지보기는 GridView에서 선택된 이미지보기 여야합니다. 선택 단추는 토스트 메시지를 표시하고 취소 단추는 사용자가 대화 상자를 종료 할 수있게합니다. 아이디어는 사용자가 원하는 사진을 최종 선택하기 전에 전체보기에서 이미지를 볼 수있게하는 것입니다.전체보기 이미지를 표시하는 사용자 지정 대화 상자 만들기

그러나이 작업을 수행하는 데 몇 가지 문제가 있습니다. 내 코드는 다음과 같습니다.

package com.newapp; 


import android.app.Activity; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ImageView; 
import android.widget.Button; 

public class MainActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
//error here: R cannot be resolved to a variable 

     GridView gridview = (GridView) findViewById(R.id.photogrid); 
     gridview.setAdapter(new ImageAdapter(this)); 

     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       //Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 
       Context mContext = getApplicationContext(); 
       Dialog dialog = new Dialog(mContext); 

       dialog.setContentView(R.layout.ImageDialog); 
       dialog.setTitle("Full-image view"); 

       ImageView image = (ImageView) dialog.findViewById(R.id.image); 
       image.setImageResource(R.drawable.android); 

       Button select = (Button) findViewById(R.id.selectimage); 
         buttonChangePerferences.setOnClickListener(new OnClickListener() { 
          public void onClick(View v) { 

          Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 


          } 
         }); 
        } 

        Button cancel = (Button) findViewById(R.id.cancelselection); 
         cancel.setOnClickListener(new OnClickListener() 
    //error here: Syntax error on tokens;AnnotationName expected instead 
             { 
          public void onClick(View v) { 
           dialog.cancel(); 

          } 
         }); 

     }) 
        } 






     package com.newapp; 


     import android.content.Context; 
     import android.view.View; 
     import android.view.ViewGroup; 
     import android.widget.BaseAdapter; 
     import android.widget.GridView; 
     import android.widget.ImageView; 

    public class ImageAdapter extends BaseAdapter{ 

private Context mContext; 

public ImageAdapter(Context c) { 
    mContext = c; 
} 

public int getCount() { 
    return mThumbIds.length; 
} 

public Object getItem(int position) { 
    return null; 
} 

public long getItemId(int position) { 
    return 0; 
} 

// create a new ImageView for each item referenced by the Adapter 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { // if it's not recycled, initialize some attributes 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(8, 8, 8, 8); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    imageView.setImageResource(mThumbIds[position]); 
    return imageView; 
} 

// references to our images 
private Integer[] mThumbIds = { 

     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 

}; 
} 

누군가 이러한 문제를 해결할 수 있도록 도와 줄 수 있습니까? 어떤 도움이라도 대단히 감사 할 것입니다. 감사합니다

+0

'문제'가 무엇인지 파악할 수 있어야합니다. 우리는 당신이 그 해결책을 찾도록 도울 수 있습니다. – Reno

답변

1

난 당신이 줄을 변경할 필요가 있다고 생각

버튼 = (버튼) findViewById를 (R.id.selectimage)를 선택;

=로 버튼 (버튼) dialog.findViewById (R.id.selectimage)을 선택;

및 취소와 동일합니다. 레이아웃의 이름 자본에 어디 R.layout.ImageDialog을 사용하고 있기 때문에 대신 "선택"의 "buttonChangePerferences"를 사용 선택 버튼 후

...

당신은 R.layout에 문제가 글자는 소문자로만 사용해야합니다 ...

dialog.show()를 추가해야합니다. 버튼을 선언 한 후

더하기, 컴파일러가 혼란스러워하기 때문에 Exclipse에서 오른쪽의 패키지 탐색기에 응용 프로그램에 약간의 빨간색 표시가있는 경우 일부 줄을 다시 작성해야 할 수도 있습니다. PROJECT 메뉴로 가서 CLEAN을 선택하고 애플리케이션을 선택하고 OK를 클릭하십시오.

+0

감사합니다 루미스, 정말 좋은 조언이었습니다. – Engprof

+0

좋습니다.이 경우 회신을 답변으로 표시 할 수 있습니까? – Lumis

1

대신 Dialog dialog = new Dialog(mContext); 을 입력해야합니다. Dialog dialog = new Dialog(MainActivity.this); 을 입력해야합니다.

관련 문제