2013-10-31 51 views
0

我想在複選框的onClick方法中使用意圖,但我得到的錯誤,方法startActivity未定義,並且構造函數Intent(new View.OnClickListener等..)也是未定義的。這裏是我的代碼:Intent不工作onClick方法

 final CheckBox addCheckbox = (CheckBox) v 
      .findViewById(R.id.addCheckbox); 

    // set data to display 

    addCheckbox 
      .setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        if (addCheckbox.isChecked()) { 
         System.out.println("Checked"); 
         PackageManager pm = mContext.getPackageManager(); 
         Drawable icon = null; 
         try { 
          icon = pm 
            .getApplicationIcon(entry.packageName); 
         } catch (NameNotFoundException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         Drawable default_icon = pm.getDefaultActivityIcon(); 
         if (icon instanceof BitmapDrawable 
           && default_icon instanceof BitmapDrawable) { 
          BitmapDrawable icon_bd = (BitmapDrawable) icon; 
          Bitmap icon_b = icon_bd.getBitmap(); 
          BitmapDrawable default_bd = (BitmapDrawable) pm 
            .getDefaultActivityIcon(); 
          Bitmap default_b = default_bd.getBitmap(); 
          if (icon_b == default_b) { 
           // It's the default icon 


           ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
           default_b.compress(Bitmap.CompressFormat.PNG, 100, stream); 
           byte[] byteArray = stream.toByteArray(); 

           Intent intent = new Intent(this, GridView.class); 
           intent.putExtra("picture", byteArray); 
           this.startActivity(intent); 
          } 
         } 
        } else { 
         System.out.println("Un-Checked"); 
        } 

       } 
      }); 

回答

0

既然你是一個listener內,thislistener這就是爲什麼你的錯誤

「的方法startActivity是不確定的」

只需刪除this

startActivity(intent); 

這是其他錯誤

構造同樣的原因 意向(新View.OnClickListener等..)」

使用View小號Context被點擊,這將是Activity Context

Intent intent = new Intent(v.getContext(), GridView.class); 

所以該塊會像

Intent intent = new Intent(v.getContext(), GridView.class); 
intent.putExtra("picture", byteArray); 
startActivity(intent); 
+0

它不應該是ClassName.this.startActivity? – hasan83

+0

@hasan我可以看到它是如何看起來如此,但是,沒有它是不需要的。它在這種情況下使用活動上下文。 Intent的構造函數需要一個在這裏明確定義的Context,這就是爲什麼你需要提供它 – codeMagic

+0

好的謝謝。第一部分工作(使用視圖上下文),但我仍然有錯誤,「startActivity(意圖)未定義爲新的View.OnClickListener」 – user2909006

1

Repalce與下面的代碼代碼

Intent intent = new Intent(YOURACTIVITY_NAME.this, GridView.class); 

intent.putExtra("picture", byteArray); 

startActivity(intent); 
+0

'v.getContext()'比'YOURACTIVITY_NAME.this'更好,並且在這種情況下將返回相同的'Context'。 – codeMagic

+0

是的你是對的!!!!! –