Passing Activity as a parameter to library

chenxueqian

New Member
I need to pass Activity as a parameter to my class library.I don't know how to do,I writed like this:

public void BillPrint(BA pBA,String Approveflow_ID) {
int VID = 0x1cb0;
int PID = 0x0003;
RightPDAPrint PDAPrint=new RightPDAPrint();
List MList=new ArrayList<String>();
MList=PDAPrint.GetPDAPrint(Approveflow_ID);
int a=0;

for(int i=0;i<MList.size();i++){
String Str=MList.get(i).toString();
new AndroidPrinter(pBA.activity,VID,PID,Str);
}
}

and the AndroidPrinter class below:

package ch.serverbox.android.usbcontroller;

import java.util.List;

import android.app.Activity;

public class AndroidPrinter {
private UsbController sUsbController;

public AndroidPrinter(Activity parentActivity,int VID,int PID,String Str){
if(sUsbController == null)
sUsbController = new UsbController(parentActivity, mConnectionHandler, VID, PID,Str);
else{
sUsbController.stop();
sUsbController = new UsbController(parentActivity, mConnectionHandler, VID, PID,Str);
}

}

private final IUsbConnectionHandler mConnectionHandler = new IUsbConnectionHandler() {
@Override
public void onUsbStopped() {
L.e("Usb stopped!");
}

@Override
public void onErrorLooperRunningAlready() {
L.e("Looper already running!");
}

@Override
public void onDeviceNotFound() {
if(sUsbController != null){
sUsbController.stop();
sUsbController = null;
}
}
};

}

I called BillPrint function in B4A:

Sub TicketThreadSub
Dim Params(1) As String
Params(0) = "Print finished!"
DatabaseUtils1.BillPrint(ProcessWorkStation.Notice_ID)
TicketThread.RunOnGuiThread("TicketUpdate", Params)

End Sub

It doesn't work in B4A,no response,nothing printed.and stoped yellow at "DatabaseUtils1.BillPrint(ProcessWorkStation.Notice_ID)
". I can't find the problem.

When try codes below in eclipse,It works fine and can print bill.

package org.databaseutils;

import org.databaseutils.DatabaseUtils;
import org.databaseutils.R;

import android.os.Bundle;
import android.os.StrictMode;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
int a=0;
int b=a;
Intent intent = new Intent();
intent.setClass(MainActivity.this, DatabaseUtils.class);
MainActivity.this.startActivity(intent);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}

Maybe I pass Activity wrong?

Thanks!
 
Top