Android-NullPointerException错误
我正在从事websocket通信。 从android设备(客户端)到基于linux的PC(服务器)。 我成功地将websocket连接到服务器。但问题是,我无法发送数据(字符串值) 有一个包含四种产品的旋转木马视图。所以,当我单击product0的照片时,我将字符串设置为“product0”,并将此字符串值发送到服务器。 我正在使用高速公路图书馆 代码在这里Android-NullPointerException错误,android,nullpointerexception,websocket,autobahn,Android,Nullpointerexception,Websocket,Autobahn,我正在从事websocket通信。 从android设备(客户端)到基于linux的PC(服务器)。 我成功地将websocket连接到服务器。但问题是,我无法发送数据(字符串值) 有一个包含四种产品的旋转木马视图。所以,当我单击product0的照片时,我将字符串设置为“product0”,并将此字符串值发送到服务器。 我正在使用高速公路图书馆 代码在这里 import de.tavendo.autobahn.WebSocketConnection; public class Myoffer
import de.tavendo.autobahn.WebSocketConnection;
public class Myoffers_Fragment extends Fragment {
private static final String TAG = "Philips";
private final WebSocketConnection mConnection = new WebSocketConnection();
public static Fragment newInstance(Myoffers context, int pos, float scale)
{
Bundle b = new Bundle();
b.putInt("pos", pos);
b.putFloat("scale", scale);
return Fragment.instantiate(context, Myoffers_Fragment.class.getName(), b);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
LinearLayout l = (LinearLayout) inflater.inflate(R.layout.mf, container, false);
int pos = this.getArguments().getInt("pos");
TextView tv = (TextView) l.findViewById(R.id.text);
tv.setText("Product " + pos);
ImageButton product_photo = (ImageButton) l.findViewById(R.id.myoffer_image);
if (pos == 0) {
product_photo.setImageResource(R.drawable.myoffers_0);
product_photo.setOnClickListener(new ImageButton.OnClickListener(){
public void onClick(View v){
String id1 = "Product0";
Log.d(TAG, "Current product is : " + id1);
mConnection.sendTextMessage(id1);
Log.d(TAG, id1 + "is sent to server!");
}
});
}
是否可能是“扩展片段”导致了错误?。。
错误如下所示
06-19 12:02:01.310: E/AndroidRuntime(2712): FATAL EXCEPTION: main
06-19 12:02:01.310: E/AndroidRuntime(2712): java.lang.NullPointerException
06-19 12:02:01.310: E/AndroidRuntime(2712): at de.tavendo.autobahn.WebSocketConnection.sendTextMessage(WebSocketConnection.java:137)
06-19 12:02:01.310: E/AndroidRuntime(2712): at com.example.philips.Myoffers_Fragment$1.onClick(Myoffers_Fragment.java:56)
06-19 12:02:01.310: E/AndroidRuntime(2712): at android.view.View.performClick(View.java:3511)
06-19 12:02:01.310: E/AndroidRuntime(2712): at android.view.View$PerformClick.run(View.java:14105)
06-19 12:02:01.310: E/AndroidRuntime(2712): at android.os.Handler.handleCallback(Handler.java:605)
06-19 12:02:01.310: E/AndroidRuntime(2712): at android.os.Handler.dispatchMessage(Handler.java:92)
06-19 12:02:01.310: E/AndroidRuntime(2712): at android.os.Looper.loop(Looper.java:137)
06-19 12:02:01.310: E/AndroidRuntime(2712): at android.app.ActivityThread.main(ActivityThread.java:4446)
06-19 12:02:01.310: E/AndroidRuntime(2712): at java.lang.reflect.Method.invokeNative(Native Method)
06-19 12:02:01.310: E/AndroidRuntime(2712): at java.lang.reflect.Method.invoke(Method.java:511)
06-19 12:02:01.310: E/AndroidRuntime(2712): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-19 12:02:01.310: E/AndroidRuntime(2712): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-19 12:02:01.310: E/AndroidRuntime(2712): at dalvik.system.NativeStart.main(Native Method)
当我单击照片发送字符串值时出错。错误发生在您的
onClick
中:
mConnection.sendTextMessage(id1);
看起来您已在顶部声明了mConnection
,但未建立任何连接
查看,在使用之前,需要在mConnection
上调用.connect()
WebSocketConnection.java
的第137行是:
public void sendTextMessage(String payload) {
mWriter.forward(new WebSocketMessage.TextMessage(payload));
}
mWriter
在调用.connect()
之前为空
因此,在使用
mConnection
对象之前,请确保您有一个有效的连接(通过调用.connect()
)。使用mConnection
实际连接到哪里?newInstance()
的最后一行应替换为:Myoffers\u Fragment result=new Myoffers\u Fragment();结果.setArguments(b);返回结果代码>。。。因为您似乎返回了一个带有空参数列表的片段。此外,该错误会在WebSocketConnection.sendTextMessage()
中抛出。你能发布那个代码吗?@gunar你想让我发布哪个代码?.Myoffers_片段是上面的代码在哪里可以找到类WebSocketConnection
?我在Android软件包中找不到它。您是否使用了库或是您编写的东西?@gunar WebSocketConnection包含在Autobahn library中,那么,我应该在哪里对代码调用.connect()。因为在Myoffers_Fragment.class中,当我访问旋转木马视图时,将生成其中的4个。如果不确切知道您的体系结构是什么以及您正在尝试做什么,很难说。就我个人而言,如果我需要经常访问这个连接,我会让我的活动控制它,而不是各种片段。实际上,我制作了Websocket_connector.class,在代码中,我声明了“public void connect(最终字符串wsuri)”,希望我已经回答了你的问题。如果你有关于架构的另一个问题,也许最好打开另一个问题,或者其他人会帮助你。祝你好运在主页中,我调用了“A.connect”(“ws://192.168.3.100:7681”);”这样地。在那之后,我访问了MyOffers\u frugment。。但同样的结果。我需要在同一个类中调用connect()吗?