Android 从另一个类运行代码

Android 从另一个类运行代码,android,Android,嗨,我是android编程新手,我正在创建一个应用程序,其中一部分使用Zxing库生成Qrcode 我用Encode方法创建了一个类,该方法包含生成qrcode的代码块 public void Encode(String Text_To_Encode ) { final ImageView imageView = (ImageView) findViewById(R.id.QrImageView); String qrData = "Ahmed"; int qrCode

嗨,我是android编程新手,我正在创建一个应用程序,其中一部分使用Zxing库生成Qrcode 我用Encode方法创建了一个类,该方法包含生成qrcode的代码块

public void Encode(String Text_To_Encode )
{
     final ImageView imageView = (ImageView) findViewById(R.id.QrImageView);
    String qrData = "Ahmed";
    int qrCodeDimention = 500;

    QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(qrData, null,
            Contents.Type.TEXT, BarcodeFormat.QR_CODE.toString(), qrCodeDimention);

    try {
        Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();

     imageView.setImageBitmap(bitmap);
    } catch (WriterException e) {
        e.printStackTrace();
    }

}
每当我在MainActivity的Oncreate()方法中调用此方法时,不幸的是,应用程序已停止
但是当我把这段代码直接放在main活动中运行时,它运行得非常好
我需要知道我做错了什么….

从普通类使用活动上下文访问视图:

public void Encode(String Text_To_Encode,Activity activity )
{
     final ImageView imageView = 
                           (ImageView)activity.findViewById(R.id.QrImageView);
    .....
}
通过传递活动上下文,从活动调用
Encode
方法:

Encode(Text_To_Encode,ActivityName.this)

您的问题在这行代码中:
final-ImageView-ImageView=(ImageView)findviewbyd(R.id.QrImageView)

你看,你试图修改一个特定的图像视图。该ImageView属于活动或片段,而不属于应用程序。当您在任何
R.id.QrImageView
不存在的活动或片段中调用该方法时,它将崩溃,因为它找不到ImageView(这是因为ImageView超出范围)

为了解决这个问题,我将通过在方法中返回位图来改进代码

为了清楚起见,您的方法应该如下所示:

public Bitmap Encode(String Text_To_Encode )
{
String qrData = "Ahmed";
int qrCodeDimention = 500;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(qrData, null,
        Contents.Type.TEXT, BarcodeFormat.QR_CODE.toString(), qrCodeDimention);
try {
    return qrCodeEncoder.encodeAsBitmap();
} catch (WriterException e) {
    e.printStackTrace();
}
}

现在,在您的活动或片段中,只需使用
imageView.setImageBitmap(qrClass.encode(stringtexttoencode))

谢谢您的重播。当我叫它的时候,把它传给Mainactivity是的,看到我的答案了吗