我有一个带有Fragment pasing json字符串的工作版本到主活动,它有一个绑定到它的tcp套接字服务:
Main_Activity:
...
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mBoundService = ((Socket_Service.LocalBinder) service).getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
mBoundService = null;
Log.d("TCP Client: Main_Activity", "onServiceDisconnected called!");
}
};
...
public void writeByte(String jsonObject) {
if (mBoundService != null) {
mBoundService.sendMessage(jsonObject);
}
}
...
片段:
...
Main_Activity activity = (Main_Activity) getActivity();
activity.writeByte(jsonObject.toString());
...
我想创建一个单独的类(没有片段)来创建json字符串,将其传递给Main_Activity,并将其传递给服务。我做到了,但它没有工作,因为mBoundService获取值" null"并且不能再将任何东西传递给服务了。
片段:
JSON pwmJASON = new JSON();
pwmJASON.cratePWMJSON(PWM1,PWM2,PWM3,PWM4,PWM5,PWM6,PWM7);
JSON.class:
package de.l.LED.control.background;
import android.app.Fragment;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import de.l.LED.control.Main_Activity;
public class JSON extends Main_Activity{
public void cratePWMJSON(int PWM1, int PWM2, int PWM3, int PWM4, int PWM5, int PWM6, int PWM7){
JSONObject jsonObject = new JSONObject();
JSONArray jsonArray = new JSONArray();
try {
//jsonArray.put("");
jsonArray.put(PWM1 * 64);
jsonArray.put(PWM2 * 64);
jsonArray.put(PWM3 * 64);
jsonArray.put(PWM4 * 64);
jsonArray.put(PWM5 * 64);
jsonArray.put(PWM6 * 64);
jsonArray.put(PWM7 * 64);
jsonObject.put("PWMs", jsonArray);
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("JSO", "Received JSON String: " + jsonObject.toString());
Main_Activity activity = new Main_Activity();
activity.writeByte(jsonObject.toString());
}
}
任何想法?
由于
答案 0 :(得分:0)
我建议使用这个:
public class JsonHelper{
public static String cratePWMJSON(int PWM1, int PWM2, int PWM3, int PWM4, int PWM5, int PWM6, int PWM7){
JSONObject jsonObject = new JSONObject();
JSONArray jsonArray = new JSONArray();
try {
//jsonArray.put("");
jsonArray.put(PWM1 * 64);
jsonArray.put(PWM2 * 64);
jsonArray.put(PWM3 * 64);
jsonArray.put(PWM4 * 64);
jsonArray.put(PWM5 * 64);
jsonArray.put(PWM6 * 64);
jsonArray.put(PWM7 * 64);
jsonObject.put("PWMs", jsonArray);
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("JSO", "Received JSON String: " + jsonObject.toString());
return jsonObject.toString();
}
}
然后在你的片段中你可以这样称呼它:
String pwmJsonAsString = JsonHelper().cratePWMJSON(PWM1,PWM2,PWM3,PWM4,PWM5,PWM6,PWM7);
Main_Activity activity = (Main_Activity) getActivity();
activity.writeByte(pwmJsonAsString);