新人,第一次弄这个,我通过Intent穿了一个值到第二个Activity的Create中,但是不知道怎么把值取出来赋给自己定义的方法中的变量

解决方案 »

  1.   

    通过 getIntent() 可以获取你传递的intent
      

  2.   

      主Activity:
        Intent intent=new Intent(MainActivity.this,SecondActivity.class);
        intent.putExtra("name", "zhangsan");
        intent.putExtra("age", "23"); 
        startActivity(intent);
      第二个Activity:
        Intent intent=getIntent();
        String name=intent.getStringExtra("name");
        String age=intent.getStringExtra("age");
      

  3.   


    值用intent传,就在另一个activity中用intent获取。getIntent方法获取intent对象.
      

  4.   

    比较纠结的一点,我用了一个调用相机拍照的功能的Demo,但是他存储照片的文件夹是固定的,我想改成通过从MainActivity中获取文本框力里的值,然后通过Intent传值到调用相机以及存储的PhotoCaptureActivity;现在传值获取没问题,但是获取到了之后会出现秒退的情况
    这个是拍照的按钮:  public class Presenter {
            public void onCapture() {
                   waterMaskHelper.startCapture();
                    EditText et =(EditText) findViewById(R.id.custno);
                    String cust=et.getText().toString();
                    Intent intent=new Intent(MainActivity.this,PhotoCaptureActivity.class);
                    intent.putExtra("custno",cust);
                    startActivity(intent);
            }
    这个是通在PhotoCaptureActivity通过Intent获取的自定义的文件夹命名:
     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;
        }
    调试了几次也不知道哪里有问题
      

  5.   

    闪退,把log看看先~
      

  6.   

    发现的问题有点多,传值后连照片的水印都没了.....不是很会看log的信息
      

  7.   

    04-13 11:09:36.281 30536-30536/com.wcong.watermask E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         Process: com.wcong.watermask, PID: 30536
                                                                         java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity {com.wcong.watermask/com.wcong.watermask.photo.PhotoCaptureActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
                                                                             at android.app.ActivityThread.deliverResults(ActivityThread.java:4215)
                                                                             at android.app.ActivityThread.handleSendResult(ActivityThread.java:4258)
                                                                             at android.app.ActivityThread.-wrap20(ActivityThread.java)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                             at android.os.Looper.loop(Looper.java:154)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:6243)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
                                                                          Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
                                                                             at com.wcong.watermask.photo.PhotoCaptureActivity.createImageFile(PhotoCaptureActivity.java:88)
                                                                             at com.wcong.watermask.MainActivity.onChoose(MainActivity.java:114)
                                                                             at com.wcong.watermask.photo.PhotoCaptureActivity.onActivityResult(PhotoCaptureActivity.java:73)
      

  8.   

     android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
    你的intent对象没有获取到,是空的。
    你可以在跳转到页面中时,在onCreate中,把值先获取保存,然后在后面用。
      

  9.   

    你的intent是空的,最好在intent那里加个判断if(null != getIntent){
    ..........
    }
      

  10.   

    我在照相的onCreate中获取保存了,但是不知道如何把值从里面取出来
      

  11.   

    你可以吧PhotoCaptureActivity中的onActivityResult方法贴出来让大家看看 没有代码是看不出来的
      

  12.   

    你拍照完成之后  是要在onActivityResult方法中做处理 或者保存的吧
      

  13.   

     @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();
        }
    这里是onActivityResult中的处理方法
      

  14.   

    你data为空啊  你拍照完成之后没传图片吧
      

  15.   

    在第二个activity直接getIntent获取上个acitivity创建的Intent对象,数据都放到这个对象里面