我有一个MainActivity
和一个private String attribute
。在我的代码中,我有以下内容:
private ServiceConnection mTransactionServiceConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
mTransactionService = IPoyntTransactionService.Stub.asInterface(iBinder);
Log.d(TAG, "Transaction service connected");
try {
mTransactionService.getTransaction("fcf98959-c188-42d1-b085-786d21e552ac", UUID.randomUUID().toString(), mTransactionServiceListener);
} catch (RemoteException e) {
e.printStackTrace();
}
}
public void onServiceDisconnected(ComponentName componentName) {
mTransactionService = null;
Log.d(TAG, "Transaction service disconnected");
}
};
值fcf98959-c188-42d1-b085-786d21e552ac
是硬编码的。我需要在MainActivity
的属性中放入一个字符串。我怎样才能做到这一点?
我试图将字符串设为public,因为它是静态的,但是不起作用。
答案 0 :(得分:0)
在您的服务中创建一个像设置器一样工作的函数,例如:
public void setValue(String value){
this.value = value;
}
onServiceConnected()函数内部
并在您启动服务后从onServiceConnected()调用它,您可以使用其中的函数。
private ServiceConnection mTransactionServiceConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
mTransactionService = IPoyntTransactionService.Stub.asInterface(iBinder);
Log.d(TAG, "Transaction service connected");
**mTransactionService.setValue(the value your want to set);**
try {
mTransactionService.getTransaction("fcf98959-c188-42d1-b085-786d21e552ac", UUID.randomUUID().toString(), mTransactionServiceListener);
} catch (RemoteException e) {
e.printStackTrace();
}
}
public void onServiceDisconnected(ComponentName componentName) {
mTransactionService = null;
Log.d(TAG, "Transaction service disconnected");
}
};
这将更新服务的值。 您还可以从onServiceConnected外部使用服务功能,只需确保它不为空即可。
答案 1 :(得分:0)
问题不是很清楚。但是,据我了解,您可能会考虑在public static
中使用一个MainActivity
变量,该变量可在代码中的任何位置使用。
因此,请像attribute
中一样定义MainActivity
变量。
public static String attribute = "fcf98959-c188-42d1-b085-786d21e552ac";
现在按如下所示在ServiceConnection
中使用它。
mTransactionService.getTransaction(MainActivity.attribute, UUID.randomUUID().toString(), mTransactionServiceListener);