2013-12-14 6 views
0

У меня есть метод OnClick из флажком в классе, который простирается baseAdapter здесь:начальная активность с неактивности класса

@Override 
       public void onClick(View v) { 
        if (addCheckbox.isChecked()) { 
         System.out.println("Checked"); 

         PackageManager pm = mContext.getPackageManager(); 
         final int DEST_IMAGE_WIDTH = 100; 
         final int DEST_IMAGE_HEIGHT = 100; 
         ApplicationInfo appInfo = mContext.getApplicationInfo(); 
         Drawable appIcon = pm.getApplicationIcon(appInfo); 
         Bitmap appBmp = Bitmap.createBitmap(DEST_IMAGE_WIDTH, DEST_IMAGE_HEIGHT, Config.ARGB_8888); 

         // Creates a new canvas based on the image specification 
         // created just above. 
         Canvas canvas = new Canvas(appBmp); 
         // (optional) Fills the entire canvas 
         canvas.drawColor(Color.WHITE); 
         // You need to set bounds otherwise a 0,0 sized image would be drawn. 
         appIcon.setBounds(0, 0, DEST_IMAGE_WIDTH, DEST_IMAGE_HEIGHT); 
         appIcon.draw(canvas); 

         /// Let's save to a .jpg file ... 
         File file = new File(mContext.getFilesDir().getAbsolutePath() + "/test2.jpg"); 
         FileOutputStream out; 
         try 
         { 
          file.createNewFile(); 
          out = mContext.getApplicationContext().openFileOutput("BitmapImage", Context.MODE_PRIVATE); 
          appBmp.compress(Bitmap.CompressFormat.JPEG, 80, out); 
          Log.i("AppInfoAdapter", "the icon(s) have been saved"); 
          out.close(); 

          // Load back the image file to confirm it works 
          // Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); 
          // ImageView imageV = (ImageView)findViewById(R.id.); 
          // imageV.setImageBitmap(bitmap); 
         } 
         catch (FileNotFoundException e1) 
         { 
          e1.printStackTrace(); 
         } 
         catch (IOException e2) 
         { 
          e2.printStackTrace(); 
         } 

         // Intent intent = new Intent (v.getContext(), Drag_and_Drop_App.class); 
         // v.getContext().startActivity(intent); 
         // Log.i("AppInfoAdapter", "New intent started to send icon bitmap"); 

        } else { 
         System.out.println("Un-Checked"); 
        } 

       } 

Из того, что я видел, я должен был бы умысел от этой деятельности в мой другой класс, где я получаю созданное растровое изображение, сделанное в методе onClick выше. Проблема в том, что мой другой класс также расширяет базовый адаптер, поэтому я не могу использовать startActivity().

Вот где я получаю растровое изображение из хранилища (в другом классе):

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // Try to reuse the views 
    ImageView view = (ImageView) convertView; 
    boolean checked = (mCheckBox==null)?false:(((CheckBox) mCheckBox).isChecked()); 
    // if convert view is null then create a new instance else reuse it 
    if (view == null) { 
     view = new ImageView(Context); 
     Log.d("GridViewAdapter", "new imageView added"); 
    } 
    if(checked == true){ 
     isSdReadable(); 
     try { 
      Log.i("GridViewAdapter", "checkbox is checked"); 
      FileInputStream in = Context.openFileInput("BitmapImage"); 
      // Load back the image file to confirm it works 
      Bitmap bitmap = BitmapFactory.decodeStream(in); 
      view.setImageBitmap(bitmap); 
      in.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     // getThumbnail(); 
     catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } else { 
     Log.e("GridView", "Icons not for use/checkbox not checked"); 
    } 
    view.setImageResource(drawables.get(position)); 
    view.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    view.setLayoutParams(new android.widget.GridView.LayoutParams(70, 70)); 
    view.setTag(String.valueOf(position)); 
    return view; 
} 

Как я могу сделать так, что я могу послать намерение моего другого класса, так что я могу получить растровое изображение?

ДОБАВЛЕНО:

ли эту работу таким же образом? (Пожалуйста, проверьте мой кодирование)

Intent intent = new Intent (v.getContext(), GVABackup.class); 
         v.getContext().startActivity(intent); 
         Log.i("AppInfoAdapter", "New intent started to send icon bitmap"); 

для одного класса, а затем

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // Try to reuse the views 
    ImageView view = (ImageView) convertView; 
    boolean checked = (mCheckBox==null)?false:(((CheckBox) mCheckBox).isChecked()); 
    // if convert view is null then create a new instance else reuse it 
    if (view == null) { 
     view = new ImageView(Context); 
     Log.d("GridViewAdapter", "new imageView added"); 
    } 
    if(checked == true){ 
     isSdReadable(); 
     Intent intent = new Intent (view.getContext(), GVABackup.class); 
      view.getContext().startActivity(intent); 
    } else { 
     Log.e("GridView", "Icons not for use/checkbox not checked"); 
    } 
    view.setImageResource(drawables.get(position)); 
    view.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    view.setLayoutParams(new android.widget.GridView.LayoutParams(70, 70)); 
    view.setTag(String.valueOf(position)); 
    return view; 
} 

в моем адаптере с классом GVABackup, как это:

package com.example.awesomefilebuilderwidget; 

IMPORTS 

public class GVABackup extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    ImageView view = (ImageView)findViewById(R.id.layout1); 

    Log.i("GridViewAdapter", "checkbox is checked"); 
    FileInputStream in = null; 
    try { 
     in = openFileInput("BitmapImage"); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    // Load back the image file to confirm it works 
    Bitmap bitmap = BitmapFactory.decodeStream(in); 
    view.setImageBitmap(bitmap); 
    try { 
     in.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
}} 
+0

Я прочитал Ваш вопрос 4 раза и не может работать, что вы просите. В одном предложении вы говорите, что ваш класс расширяет BaseAdapter. В другом вы говорите, что это активность. – Kuffs

+0

Итак, посмотрев вокруг, я заметил, что мне нужно использовать намерение при отправке растрового изображения между действиями через поток FileInput/Output. Моя вторая активность, которую я отправляю, не распространяется на Activity, и поэтому я не могу использовать startActivity() в намерении этого класса, иначе я получаю сообщение об ошибке. Что я могу сделать, чтобы использовать какое-то намерение? – user2909006

+0

Вам нужно будет иметь класс как действие, если вы хотите отправить намерение. Это единственный возможный способ – user2511882

ответ

Смежные вопросы