这个是我定义的类:
  public File createImageFile() {
      
        String fileName="";
        File mediaStorageDir = new File(
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                fileName);
        if (!mediaStorageDir.exists()) {
            if (!mediaStorageDir.mkdirs()) {
                Log.d("----", "failed to create directory");
                return null;
            }
        }
        String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        String suffix = ".jpg";
        File image = new File(mediaStorageDir + File.separator + timeStamp + suffix);
        return image;
    }这个是调用后相机的活动: @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    @Override
    @AfterPermissionGranted(1)
    protected void onResume() {
        super.onResume();
        if (EasyPermissions.hasPermissions(PhotoCaptureActivity.this, perms)) {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            imgUri = createImageFile();
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imgUri));
            } else {
                ContentValues contentValues = new ContentValues(1);
                contentValues.put(MediaStore.Images.Media.DATA, imgUri.getAbsolutePath());
                Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
            }
            startActivityForResult(takePictureIntent, REQUEST_CODE);
        } else {
            EasyPermissions.requestPermissions(this, "", 1, perms);
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (REQUEST_CODE == requestCode && resultCode == RESULT_OK) {
            Log.i("---success---", imgUri + "");
            ArrayList<String> strings = new ArrayList<>();
            strings.add(imgUri.toString());
            if (photoListener != null)
                photoListener.onChoose(strings);
            if (waterMarkListener != null) {
                WaterMask.WaterMaskParam maskParam = waterMarkListener.onDraw();
                Bitmap bitmap = ImageUtil.getBitmap(String.valueOf((imgUri)));
//        WaterMask.saveJPGE_After(rotateBitmapByDegree(bitmap, readPictureDegree(String.valueOf(imgUri))),String.valueOf(imgUri));
                WaterMask.draw(this, bitmap, String.valueOf((imgUri)), maskParam);
            }
            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imgUri)));
        }
        finish();
    }
     public File createImageFile() {
        Intent intent=getIntent();
        String cu=intent.getStringExtra("custno");
        String fileName="";
        File mediaStorageDir = new File(
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                fileName);
        if (!mediaStorageDir.exists()) {
            if (!mediaStorageDir.mkdirs()) {
                Log.d("----", "failed to create directory");
                return null;
            }
        }
        String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        String suffix = ".jpg";
        File image = new File(mediaStorageDir + File.separator + timeStamp + suffix);
        return image;
    }
}
因为我之前用的是下的一个Demo,用了Intent传值到调用相机的活动中,但是传过去之后就会启动调用相机的活动,我只是想把值给传过去,而不是直接传过去了就启动相机,所以就把这个调用相机的活动中的需要获取值的方法createImageFile()单独拿出来,就是最上面的那段代码。但是现在不知道该怎么传值,怎么操作了,求大神指教一波。萌新一个

解决方案 »

  1.   

    通过接口就可以实现public class Exam implements MainActivity.MainActivityCallback {
        private String output;
        public String getOutput(){
            return output;
        }    public Exam() {
            MainActivity.setOnMainActivityListener(this);
        }    @Override
        public void test(String output) {
            this.output=output;
        }
    } public class MainActivity extends AppCompatActivity {
        
        private static MainActivityCallback mCallback;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            Exam exam=new Exam();
            mCallback.test("随便测试一下");
            Log.v("测试",exam.getOutput());
        }
       
        public static void setOnMainActivityListener(MainActivityCallback callback){
            mCallback=callback;
        }
        public interface MainActivityCallback{
            void test(String output);
        }
      

  2.   

    你百度一下 android接口回调就OK了。
      

  3.   

    可以传值过去,但是我要怎么才能从另一个活动中获取Exam()里面的值,在活动中重新实例化获取的就是空值
      

  4.   

    oj8k了 ~~~~~~~~~ 
      

  5.   

    你把项目上传,链接给我,不懂得可以CSDN私信
      

  6.   

    如果 存在引用关系 可以通过调用传参即可。
    如果存在上下文通用关系 可以拿SharedPreferences 存储获取。