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!
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!