Android catch(notfounde)不适用于我的案例

Android catch(notfounde)不适用于我的案例,android,image,try-catch,Android,Image,Try Catch,我的应用程序正在一个接一个地显示图像,图像的名称是a1、a2、a3…一个,我试图捕捉图像数量持续时的异常,但它对我不起作用。 代码如下: imagename = getIntent().getExtras().getString("somekey"); resId = getResources().getIdentifier(imagename + num, "drawable", getPackageName()); try { i1

我的应用程序正在一个接一个地显示图像,图像的名称是a1、a2、a3…一个,我试图捕捉图像数量持续时的异常,但它对我不起作用。 代码如下:

imagename = getIntent().getExtras().getString("somekey");

    resId = getResources().getIdentifier(imagename + num, "drawable",
            getPackageName());

    try {
        i10.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                image1.setImageResource(resId);
                num++;
                overridePendingTransition(R.anim.pushin, R.anim.pushout);

            }
        });
    } catch (NotFoundException e){
        e.printStackTrace();
        i10.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(getApplicationContext(), Menu.class);
                startActivity(i);
                overridePendingTransition(R.anim.pushinhorizontal,
                        R.anim.pushouthorizontal);

            }
        });
    }

您的try块正在处理未获取资源标识符的侦听器的分配

你应该这样做

imagename = getIntent().getExtras().getString("somekey");

i10.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        int resID = 0;
        try{
            resId = getApplicationContext().getResources().getIdentifier(imagename + num, "drawable", getPackageName());
        }catch (NotFoundException e){
            e.printStackTrace();
        }
        if(resId > 0){
            image1.setImageResource(resId);
            num++;
            overridePendingTransition(R.anim.pushin, R.anim.pushout);
        }
        else{
            Intent i = new Intent(getApplicationContext(), Menu.class);
            startActivity(i);
            overridePendingTransition(R.anim.pushinhorizontal,
                    R.anim.pushouthorizontal); 
        }
    }
});

似乎您正在尝试在click listener内部捕获异常,而在不起作用的外部捕获异常将所有代码放入
try-catch
块不是异常管理,那么最佳做法是什么?我不明白为什么要使用if(resId>0),因为它总是resId>0,问题是,当我们点击i10,到达最后一幅图像a60时,它会自动捕获异常并返回菜单。然后将try-catch块放入
onClick
方法中。查看我的编辑当最后一张图片出现而没有找到下一张图片时,您的
菜单
活动将启动。如果未找到图像,则
resID
将为0,并且您的活动将被启动Edit显示错误消息:NotFoundException无法解析为类型,这与我的第一个代码的错误相同您是否导入
android.content.res.Resources