如何修复这个问题无法解决方法startResultActivity com.google.zxing.Result?

huangapple go评论89阅读模式
英文:

How to fix this problem cannot resolve method startResultActivity com.google.zxing.Result?

问题

我尝试在ResultActivity类中打开结果但为什么无法呢

我尝试从图库中的图像扫描QR码

有什么解决方案吗

以下是代码示例

// 这是扫描图像的代码
case R.id.scn_img:
    Intent pickIntent = new Intent(Intent.ACTION_PICK);
    pickIntent.setDataAndType(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
    startActivityForResult(pickIntent, 111);
    break;

// 这是onActivityResult代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case 111:
            if (data == null || data.getData() == null) {
                Log.e("TAG", "The uri is null, probably the user cancelled the image selection process using the back button.");
                return;
            }
            Uri uri = data.getData();
            try {
                InputStream inputStream = getContentResolver().openInputStream(uri);
                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                if (bitmap == null) {
                    Log.e("TAG", "uri is not a bitmap," + uri.toString());
                    return;
                }
                // 其他图像处理逻辑...
            } catch (FileNotFoundException e) {
                Log.e("TAG", "can not open file" + uri.toString(), e);
            }
            break;
    }
}

// 这是ResultActivity类的代码
public class ResultActivity extends AppCompatActivity {
    // ... 其他代码 ...

    // 这是用来启动ResultActivity的静态方法
    public static void startResultActivity(@NonNull Context context, @NonNull BarcodeResult barcodeResult) {
        // 启动ResultActivity的逻辑...
    }

    // ... 其他代码 ...

    // 这是启动ResultActivity的示例
    ResultActivity.startResultActivity(BaseActivity.this, result);

    // ... 其他代码 ...
}

希望这个示例对你有所帮助。如有问题,请随时问我。

英文:

i try to open the result on ResultActivity class but it cant be why?

**i try to scan qr code from image from the gallery **

any solution

here is the code

case R.id.scn_img:
Intent pickIntent = new Intent(Intent.ACTION_PICK);
pickIntent.setDataAndType( android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(pickIntent, 111);
break;

this is onActivityResult code

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
//the case is because you might be handling multiple request codes here
case 111:
if(data == null || data.getData()==null) {
Log.e("TAG", "The uri is null, probably the user cancelled the image selection process using the back button.");
return;
}
Uri uri = data.getData();
try
{
InputStream inputStream = getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
if (bitmap == null)
{
Log.e("TAG", "uri is not a bitmap," + uri.toString());
return;
}
int width = bitmap.getWidth(), height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
bitmap.recycle();
bitmap = null;
RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels);
BinaryBitmap bBitmap = new BinaryBitmap(new HybridBinarizer(source));
MultiFormatReader reader = new MultiFormatReader();
try
{
Result result = reader.decode(bBitmap);
//here i want to do the code but this not working
// here is the problem
//********************************
ResultActivity.startResultActivity(BaseActivity.this, result);
//********************************
// toast message it is work good
Toast.makeText(this, "The content of the QR image is: "
+ result.getText(), Toast.LENGTH_SHORT).show();
}
catch (NotFoundException e)
{
Log.e("TAG", "decode exception", e);
}
}
catch (FileNotFoundException e)
{
Log.e("TAG", "can not open file" + uri.toString(), e);
}
break;
}
}

here is my ResultActivity class code

public class ResultActivity extends AppCompatActivity {
private static final String HISTORY_DATA = "ResultActivity.HISTORY_DATA";
private static final int REQUEST_WRITE_PERMISSION = 200;
private static BarcodeResult barcodeResult = null;
private static HistoryItem historyItem = null;
private ResultViewModel viewModel;
private ResultFragment currentResultFragment;
public static void startResultActivity(@NonNull Context context, @NonNull BarcodeResult barcodeResult) {
ResultActivity.barcodeResult = barcodeResult;
ResultActivity.historyItem = null;
Intent resultIntent = new Intent(context, ResultActivity.class);
context.startActivity(resultIntent);
}
public static void startResultActivity(@NonNull Context context, @NonNull HistoryItem historyItem) {
ResultActivity.barcodeResult = null;
ResultActivity.historyItem = historyItem;
Intent resultIntent = new Intent(context, ResultActivity.class);
resultIntent.putExtra(HISTORY_DATA, true);
context.startActivity(resultIntent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
viewModel = ViewModelProviders.of(this).get(ResultViewModel.class);
initStateIfNecessary(savedInstanceState);
ActionBar ab = getSupportActionBar();
if(ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
if(isFinishing()) {
return;
}
loadFragment(viewModel.mParsedResult);
displayGeneralData();
}
private void initStateIfNecessary(Bundle savedInstanceState) {
boolean hasHistoryItem = getIntent().getBooleanExtra(HISTORY_DATA, false);
if(savedInstanceState == null) {
if(hasHistoryItem && historyItem != null) {
viewModel.initFromHistoryItem(historyItem);
} else if(barcodeResult != null) {
viewModel.initFromScan(barcodeResult);
} else {
// no data to display -> exit
Toast.makeText(this, R.string.activity_result_toast_error_cant_load, Toast.LENGTH_SHORT).show();
finish();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share,menu);
getMenuInflater().inflate(R.menu.copy,menu);
getMenuInflater().inflate(R.menu.save, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(menu != null) {
MenuItem saveMi = menu.findItem(R.id.save);
if(saveMi != null) {
saveMi.setVisible(!viewModel.mSavedToHistory);
}
}
return true;
}
public void onClick(View view) {
if (view.getId() == R.id.btnProceed) {
if(currentResultFragment != null) {
currentResultFragment.onProceedPressed(this);
}
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.share:
Intent sharingIntent= new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(Intent.EXTRA_TEXT, viewModel.mParsedResult.getDisplayResult());
startActivity(Intent.createChooser(sharingIntent,getString(R.string.share_via)));
return true;
case R.id.save:
viewModel.saveHistoryItem(viewModel.currentHistoryItem);
invalidateOptionsMenu();
Toast.makeText(this, R.string.activity_result_toast_saved, Toast.LENGTH_SHORT).show();
return true;
case R.id.copy:
ClipboardManager clipboardManager =(ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("Text", viewModel.mParsedResult.getDisplayResult());
clipboardManager.setPrimaryClip(clipData);
Toast.makeText(getApplicationContext(), R.string.content_copied, Toast.LENGTH_SHORT).show();
return true;
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void loadFragment(@NonNull ParsedResult parsedResult) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ResultFragment resultFragment;
switch (parsedResult.getType()) {
case ADDRESSBOOK:
resultFragment = new ContactResultFragment();
break;
case EMAIL_ADDRESS:
resultFragment = new EmailResultFragment();
break;
case PRODUCT:
resultFragment = new ProductResultFragment();
break;
case URI:
resultFragment = new URLResultFragment();
break;
case GEO:
resultFragment = new GeoResultFragment();
break;
case TEL:
resultFragment = new TelResultFragment();
break;
case SMS:
resultFragment = new SMSResultFragment();
break;
case WIFI:
resultFragment = new WifiResultFragment();
break;
case TEXT:
default:
resultFragment = new TextResultFragment();
break;
}
currentResultFragment = resultFragment;
resultFragment.putQRCode(parsedResult);
ft.replace(R.id.activity_result_frame_layout, resultFragment);
ft.commit();
}

}

error message it is

cannot resolve method startResultActivity com.google.zxing.Result

I want to answer with an example

Thank you

答案1

得分: 0

ResultActivity中没有名为startResultActivity的静态方法,该方法接受ContextResult作为参数

BarcodeResultResult不相同

您需要创建一个方法,其签名为public static void startResultActivity(@NonNull Context context, @NonNull Result result) {

英文:

There is no static method by the name of startResultActivity in ResultActivity that takes Context and Result as arguments

BarcodeResult is not the same as Result

You need to create a method with the signature public static void startResultActivity(@NonNull Context context, @NonNull Result result) {

huangapple
  • 本文由 发表于 2020年5月4日 07:35:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/61583021.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定