繁体   English   中英

从非活动类开始活动

[英]starting activity with a non-activity class

我在扩展baseAdapter的类中具有复选框的onClick方法:

@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方法获得创建的位图。 问题是我的另一个类也扩展了baseadapter,所以我不能使用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();
    }
}}

我不完全了解您的要求,但是LocalBroadcastmanagerLocalBroadcastmanager您的要求吗?

http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM