2011-04-05 159 views
0

我正在写一个android活动的代码,它将显示网格视图中存储在手机中的图像的缩略图。当选择图片时,弹出一个自定义对话框。该对话框在图像视图中显示较大版本的图像,以及一个取消按钮,该按钮将用户导回图片收集显示和一个选择按钮,该按钮将开始下一个活动。当我在Cancel.setOnClickListener方法中放置重写时,编译器说这是一个错误,并建议我将其删除。当我删除它时,编译器会再次抱怨,并说需要重写。请问任何机构能帮助我吗?任何帮助,将不胜感激。覆盖问题

package com.picturechoiceactivity; 

import android.app.Activity; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.content.Context; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.GridView; 
import android.widget.AdapterView; 
import android.widget.ImageView; 
import android.widget.Toast; 
import android.provider.MediaStore; 
import android.provider.MediaStore.Images.Thumbnails; 
import android.net.Uri; 
import android.widget.AdapterView.OnItemClickListener; 



public class MainActivity extends Activity { 
    public Cursor myImageCursor; 
    public int columnNumber; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     String[] imageIDs = new String[]{MediaStore.Images.Thumbnails.IMAGE_ID}; 

     Uri myImagesSource = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI; 


     String[] projection = { 
       MediaStore.Images.ImageColumns._ID, // The columns we want 
       MediaStore.Images.Thumbnails.IMAGE_ID, 
       MediaStore.Images.Thumbnails.KIND }; 
     String selection = MediaStore.Images.Thumbnails.KIND + "=" + // Select only mini's 
     MediaStore.Images.Thumbnails.MINI_KIND; 

     myImageCursor = this.managedQuery(myImagesSource, projection, selection, null, null); 


     if (myImageCursor == null) 
     { 
      columnNumber = myImageCursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID); 

      GridView PhoneImageView = (GridView)findViewById(R.id.imageview); 
      PhoneImageView.setAdapter(new ImageAdapter(this)); 

      PhoneImageView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View v, 
         int position, long id) { 
        String[] data = { MediaStore.Images.Media.DATA }; 

        final Cursor viewImageCursor = managedQuery(
          MediaStore.Images.Media.EXTERNAL_CONTENT_URI, data, 
          null, null, MediaStore.Images.Thumbnails._ID); 
        final int imageColumnIndex = viewImageCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
        viewImageCursor.moveToPosition(position); 
        viewImageCursor.moveToFirst(); 
        final String filepath = viewImageCursor.getString(imageColumnIndex); 
        Toast.makeText(MainActivity.this, filepath, Toast.LENGTH_LONG).show(); 

        Bitmap yourSelectedImage = BitmapFactory.decodeFile(filepath); 
         final Dialog dialog = new Dialog(MainActivity.this); 
         dialog.setContentView(R.layout.dialog); 
         dialog.setTitle("Picture in full-view"); 
         dialog.setCancelable(true); 


         ImageView image = (ImageView) dialog.findViewById(R.id.imagev); 

         image.setImageBitmap(yourSelectedImage); 


         Button cancel = (Button) dialog.findViewById(R.id.selectimage); 

         cancel.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) /*error shown here*/ { 

           dialog.dismiss(); 
          } 
         }); 

         Button select = (Button) dialog.findViewById(R.id.cancelselection); 
         select.setOnClickListener(new OnClickListener() { 
          public void onClick(View v) { 
          //String i = viewImageCursor.getString(imageColumnIndex); 
          //System.gc(); 
          Intent intent = new Intent(getApplicationContext(), CategoryActivity.class); 
          intent.putExtra("filename", filepath); 
          startActivity(intent); 

          } 
         }); 
         dialog.show(); 

        } 
       } 
      ); 
     } 
     else 
     { 
      Toast.makeText(MainActivity.this, "Gallery is empty.", Toast.LENGTH_LONG).show(); 
     } 

    }  
} 

回答

1

@Override的接口开始在Java 6中,所以一定要与正确的源目标和JDK编译。

如果您在没有@Override时发生错误,那么您听起来像是拼写错误。 @Override始终是可选的。

+0

@马修 - 谢谢 – 2011-04-05 23:15:52