Java 与onActivityResult一起使用时无法引用非最终目的

Java 与onActivityResult一起使用时无法引用非最终目的,java,android,android-intent,android-asynctask,Java,Android,Android Intent,Android Asynctask,在onActivityResult中尝试转移到新的意图时,我遇到了一些问题。代码如下: public void onActivityResult(int requestCode, int resultCode, Intent intent) { IntentResult scanningResult = IntentIntegrator.parseActivityResult( requestCode, resultCode, intent); if (s

onActivityResult
中尝试转移到新的意图时,我遇到了一些问题。代码如下:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(
            requestCode, resultCode, intent);
    if (scanningResult != null) {
        barcode = scanningResult.getContents();
        new GetBookByBarcode(
                new GetBookByBarcode.OnRoutineFinished() {
                    public void onFinish() {
                        String bookID = GetBookByBarcode.bookID;
                        if (bookID.equals("")) {
                            Toast toast = Toast.makeText(getApplicationContext(),
                                    "Book not found, please try another barcode.",
                                    Toast.LENGTH_SHORT);
                            toast.show();
                        } else {
                            intent = new Intent(context, ReserveBook.class);
                            intent.putExtra("BookID", bookID);
                            startActivity(intent);
                            BarcodeScan.this.finish();

                        }
                    }
                }).execute();
    } else {
        Toast toast = Toast.makeText(getApplicationContext(),
                "No scan data received!", Toast.LENGTH_SHORT);
        toast.show();
    }
}
}
首先,我将执行条形码扫描。当onActivityResult
onActivityResult
时,我将执行
AsyncTask
类。当
AsyncTask
onFinish
完成时,我会转移到一个新的意图。但是,我收到错误消息:

Cannot refer to non-final variable intent inside inner class defined in different method.

在else语句中的
intent
。有什么想法吗?提前感谢。

只需声明一个新的
Intent
变量即可。无论如何,您正在创建一个新的
Intent
,因此尝试从
onActivityResult
引用非最终参数是没有意义的


从编译器获得此消息的原因是,在这样一个匿名内部类中,只能引用
final
变量(在Java8中实际上是final变量)

只需声明一个新的
Intent
变量。无论如何,您正在创建一个新的
Intent
,因此尝试从
onActivityResult
引用非最终参数是没有意义的


从编译器获得此消息的原因是,在这样一个匿名内部类中,只能引用
final
变量(在Java8中实际上是final变量)

只需声明一个新的
Intent
变量。无论如何,您正在创建一个新的
Intent
,因此尝试从
onActivityResult
引用非最终参数是没有意义的


从编译器获得此消息的原因是,在这样一个匿名内部类中,只能引用
final
变量(在Java8中实际上是final变量)

只需声明一个新的
Intent
变量。无论如何,您正在创建一个新的
Intent
,因此尝试从
onActivityResult
引用非最终参数是没有意义的

从编译器获得此消息的原因是,在这样一个匿名内部类中,只能引用
final
变量(在Java8中实际上是final变量)

而不是做

intent = new Intent(context, ReserveBook.class);
intent.putExtra("BookID", bookID);
startActivity(intent);
BarcodeScan.this.finish();
试着做

Intent newIntent = new Intent(context, ReserveBook.class);
newIntent.putExtra("BookID", bookID);
startActivity(newIntent);
BarcodeScan.this.finish();
因为到目前为止,您正在尝试从ActivityResult上访问参数,这会导致错误。

而不是

intent = new Intent(context, ReserveBook.class);
intent.putExtra("BookID", bookID);
startActivity(intent);
BarcodeScan.this.finish();
试着做

Intent newIntent = new Intent(context, ReserveBook.class);
newIntent.putExtra("BookID", bookID);
startActivity(newIntent);
BarcodeScan.this.finish();
因为到目前为止,您正在尝试从ActivityResult上访问参数,这会导致错误。

而不是

intent = new Intent(context, ReserveBook.class);
intent.putExtra("BookID", bookID);
startActivity(intent);
BarcodeScan.this.finish();
试着做

Intent newIntent = new Intent(context, ReserveBook.class);
newIntent.putExtra("BookID", bookID);
startActivity(newIntent);
BarcodeScan.this.finish();
因为到目前为止,您正在尝试从ActivityResult上访问参数,这会导致错误。

而不是

intent = new Intent(context, ReserveBook.class);
intent.putExtra("BookID", bookID);
startActivity(intent);
BarcodeScan.this.finish();
试着做

Intent newIntent = new Intent(context, ReserveBook.class);
newIntent.putExtra("BookID", bookID);
startActivity(newIntent);
BarcodeScan.this.finish();


因为到现在为止,,您正试图从ActivityResult上的
访问参数,这会给您带来错误。

尝试命名
intent
otherIntent
@Marcus Sorry,但您的意思是什么?尝试命名
intent
otherIntent
@Marcus Sorry,但您的意思是什么?尝试命名
intent
otherIntent
@Marcus抱歉,但你的意思是什么?尝试将
intent
命名为
otherIntent
@Marcus抱歉,但你的意思是什么?当我这么做时,它只是停留在扫描按钮上,显示意图。扫描后,它不会移动到新的意图。有什么想法吗?可能是因为
if(bookID.equals(“”)
是真的。你看到祝酒词了吗@丹尼西:你应该接受答案。祝你好运和快乐@丹尼斯当我这么做的时候,它只是停留在扫描按钮上。扫描后,它不会移动到新的意图。有什么想法吗?可能是因为
if(bookID.equals(“”)
是真的。你看到祝酒词了吗@丹尼西:你应该接受答案。祝你好运和快乐@丹尼斯当我这么做的时候,它只是停留在扫描按钮上。扫描后,它不会移动到新的意图。有什么想法吗?可能是因为
if(bookID.equals(“”)
是真的。你看到祝酒词了吗@丹尼西:你应该接受答案。祝你好运和快乐@丹尼斯当我这么做的时候,它只是停留在扫描按钮上。扫描后,它不会移动到新的意图。有什么想法吗?可能是因为
if(bookID.equals(“”)
是真的。你看到祝酒词了吗@丹尼西:你应该接受答案。祝你好运和快乐@丹尼斯