startActivityForResult 未运行

Posted

技术标签:

【中文标题】startActivityForResult 未运行【英文标题】:startActivityForResult is not run 【发布时间】:2014-10-31 20:31:28 【问题描述】:

为什么onActivityResult 没有运行? 有人可以帮忙吗? 我只有类名是MainActivity 这是我的代码

public class MainActivity  extends Activity

public static final int CROP = 1;
private static final String TAG = MainActivity.class.getCanonicalName();
private ImageView imgView;
private Button selectBtn;

public void onCreate(Bundle savedInstanceState)

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    imgView = (ImageView)findViewById(R.id.imgView);
    hasilET = (EditText)findViewById(R.id.hasilET);
    selectBtn = (Button)findViewById(R.id.selectBtn);
    selectBtn.setOnClickListener(new ClickSelect());


public class ClickSelect implements View.OnClickListener

    @Override
    public void onClick(View v) 
        // TODO Auto-generated method stub
        Log.v(TAG, "CLICK");
        Intent i = new Intent(Intent.ACTION_GET_CONTENT);
        i.setType("image/*");
        i.putExtra("crop", "true");
        i.putExtra("aspectX", 0);
        i.putExtra("aspectY", 0);
        i.putExtra("outputX", 200);
        i.putExtra("outputY", 150);
        i.putExtra("return-data", true);
        startActivityForResult(i, CROP);            
    

    public void onActivityResult(int requestCode, int resultCode, Intent data)
        Log.v(TAG, "crop");
        Bitmap bmp;
        if(requestCode==1)
            if(data != null)
                Bundle extras = data.getExtras();
                bmp = extras.getParcelable("data");
                imgView.setImageBitmap(bmp);                    
            
        
    


【问题讨论】:

【参考方案1】:

在快速查看您的代码后,请注意:

似乎是正确的,如果你替换你的 CROP 会发生什么

startActivityForResult(i, CROP);

有数字吗?在

中使用相同的数字
  if(requestCode==CROP)

也许删除这一行:

 i.putExtra("crop", "true")

【讨论】:

我已经用 1 改变了,但仍然没有运行,你能帮帮我吗? 你在没有 i.putExtra("crop", "true") 的情况下尝试过吗 - 这就是我的问题:D 在没有i.putExtra("crop", "true")的情况下调试,没有crop界面。我认为startActivityForResult 有问题【参考方案2】:

您应该在 MainActivity 类中覆盖 onActivityResult()

onActivityResult() 从类 ClickSelect 移动到 MainActivity

使用此示例:Example

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
  if (requestCode == CROP) 
    if (resultCode == RESULT_OK) 
    ...
    
  

【讨论】:

这是我覆盖onActivityResult时的错误:描述资源路径位置类型MainActivity.ClickSelect类型的onActivityResult(int, int, Intent)方法必须覆盖或实现超类型方法MainActivity.java /PETIv2/ src/com/petiv2 第 110 行 Java 问题 将 onActivityResult() 从 ClickSelect 类移动到 MainActivity 它不起作用,void 是变量 onActivityResult 的无效类型。又报错了 如何在单个类中使用意图? 发布你的 MainActivity,我会看看它。无论如何,您的 onActivityResult 不应该在公共类 ClickSelect 实现 View.OnClickListener 中。它应该是扩展 Activity 基类的 MainActivity 的一部分。至少当您单击按钮时,您的图库会启动吗?

以上是关于startActivityForResult 未运行的主要内容,如果未能解决你的问题,请参考以下文章

Fragment的startActivityForResult和Activity的startActivityForResult的区别

如何在 onActivityResult 中调用 startActivityForResult?

startActivityForResult和setResult详解

Android------startActivityForResult

startActivityForResult详解

如何从 TabHost Activity 返回结果(startActivityForResult)?