2011-02-10 61 views
0

我正在嘗試創建一個自定義對話框,該對話框在全視圖中顯示圖像,並具有Select和Cancel按鈕。單擊圖像時應顯示此自定義對話框,以便用戶以全視圖查看所選圖像。圖像視圖應該是從GridView中選擇的圖像視圖。選擇按鈕將顯示Toast消息,取消按鈕將允許用戶退出對話框。這個想法是允許用戶在他或她對他們想要的圖片作出最終選擇之前以全視角看到圖像。創建一個顯示完整視圖圖像的自定義對話框

但是,我有幾個問題試圖做到這一點。我的代碼如下所示:

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 2011-02-10 09:49:44

回答

1

我想你需要改變這一行

按鈕,選擇=(按鈕)findViewById(R.id.selectimage);

按鈕選擇=(按鈕)dialog.findViewById(R.id.selectimage);

和取消相同。

選擇按鈕後,您用來代替「選擇」「buttonChangePerferences」 ......

你,因爲你正在使用R.layout.ImageDialog在佈局的名稱是資本與R.layout問題它應該只在小寫字母...

你需要添加dialog.show();在你聲明你的按鈕

加上,因爲編譯器有困惑,你可能需要簡單地重寫一些行,並且在你的應用程序在Exclipse右邊的包資源管理器中仍然有一點紅色標記時,你需要進入PROJECT菜單,然後選擇您的應用程序並點擊OK。

+0

謝謝Lumis,那真是個好建議。 – Engprof 2011-02-10 13:53:47

1

而不是Dialog dialog = new Dialog(mContext); 您需要更換Dialog dialog = new Dialog(MainActivity.this); 然後它會工作。