[英]How to call a service method from another service method with "intent"?
我對 java 完全陌生。 我有以下代碼,我試圖從數據庫中檢索一個值,但我需要將該值作為變量返回:
private String readInfo(String parameter, String option) {
// some data conversion
Context conVar = this;
Intent intent = new Intent(conVar, FlipKRetriev.class);
Log.d("LogMail", "Intent Create");
//intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.d("LogMail", "Add Flags");
conVar.startService(intent);
//no idea how to call FlipKRetriev.rgetData and return its variable
Log.d("LogMail", "Start Intent");
return "Missing Variable from FlipRetriev.rgetData";
}
package com.flipkeyboard;
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.database.Cursor;
import android.os.IBinder;
import android.util.Log;
public class FlipKRetriev extends Service {
private FlipKDataBas jVarDB;
@SuppressLint("Range")
public CharSequence rgetData(String parameter, String options) {
Log.d("LogMail", "Reached getData");
jVarDB = new FlipKDataBas(this);
int iConCCTS = jVarDB.conCCTS();
Log.d("LogMail", String.valueOf(iConCCTS));
Log.d("LogMail", "Called DB");
// some data conversion...
String varRet, varRet1, varRet2;
return varRet;
}
}
package com.flipkeyboard;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class FlipKDataBas extends SQLiteOpenHelper {
public static final String DBA_CCTS = "FlipKDB.db";
public static final String TAB_CCTS = "CCTS";
public static final String COL_ID = "ID";
public static final String COL_NAME = "NAME";
public static final String COL_EMAL = "EMAL";
public static final String COL_PHWK = "PHWK";
public static final String COL_PHMB = "PHMB";
public static final String COL_CITY = "CITY";
public static final String COL_CTRY = "CTRY";
public FlipKDataBas(Context conVar) {
super(conVar, DBA_CCTS, null, 1);
Log.d("LogMail", "FlipKDataBas OK");
}
@Override
public void onCreate(SQLiteDatabase varDB) {
// some code...
}
@Override
public void onUpgrade(SQLiteDatabase varDB, int i, int i1) {
// some code...
}
public int conCCTS() {
SQLiteDatabase varDB = this.getReadableDatabase();
Log.d("LogMail", "Count DB");
return (int) DatabaseUtils.queryNumEntries(varDB, TAB_CCTS);
}
}
問題是我不知道如何從我在“readInfo”中使用的“intent”調用方法“rgetData”。
任何幫助表示贊賞。
我能夠通過解決方法解決此問題:
這基本上改變了對 FlipKRetriev class 的更具體系列調用的“意圖”方法。
// This is to fetch the information from the database
FlipKRetriev cls = new FlipKRetriev();
Context conVar = this;
cls.parameter = txtPar;
cls.options = option;
cls.rStartSrv(conVar);
retValFKR = cls.rgetData();
在哪里:
我得到的錯誤是我沒有將上下文從第一個 class 傳遞到第二個(我在第二個類中直接使用“this”),這是能夠鏈接它們所必需的。
public void rStartSrv(Context context) {
//parameter = (String) intent.getExtras().get("parameter");
//options = (String) intent.getExtras().get("options");
Log.d("LogMail", "Reached On Receive");
jVarDB = new FlipKDataBas(context);
int iConCCTS = jVarDB.conCCTS();
Log.d("LogMail", String.valueOf(iConCCTS));
Log.d("LogMail", String.valueOf(parameter));
Log.d("LogMail", String.valueOf(options));
}
沒有上下文,就無法調用數據庫變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.