#android #wifi-direct #wifip2p
#Android #wifi-direct #wifip2p
Вопрос:
Проект demowifi, приведенный здесь.
но когда я пытаюсь его реализовать, я получаю эту ошибку-
FATAL EXCEPTION: main
Process: microsoft.demo_wifidirect, PID: 3540
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.wifi.p2p.CONNECTION_STATE_CHANGE flg=0x24000010 (has extras) } in microsoft.demo_wifidirect.WiFiDirectBroadcastReceiver@41bad428
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:782)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5641)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1288)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1104)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: microsoft.demo_wifidirect.DeviceListFragment cannot be cast to microsoft.demo_wifidirect.DeviceDetailFragment
at microsoft.demo_wifidirect.WiFiDirectActivity.resetData(WiFiDirectActivity.java:101)
at microsoft.demo_wifidirect.WiFiDirectBroadcastReceiver.onReceive(WiFiDirectBroadcastReceiver.java:101)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:772)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5641)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
Пожалуйста, помогите мне понять, что пошло не так, поскольку я совершенно новичок в Android.
Комментарии:
1. попробуйте эту ссылку для демонстрации: github.com/ahmontero/wifi-direct-demo
2. В
WiFiDirectBroadcastReceiver
вы выполняете приведениеDeviceListFragment
кDeviceDetailFragment
, что вызывает ошибку3. добавьте класс WiFiDirectBroadcastReceiver
4. Вы изменили название пакета. Везде ли что-то изменилось, особенно в
AndroidManifest.xml
?
Ответ №1:
Для всех, у кого была эта проблема, это приведенное исключение выдавалось, потому что у меня были оба класса фрагментов, перечисленных как «DeviceDetailFragment»: ) Когда я исправил это и убедился, что один предназначен для DeviceDetailFragment, а другой — для DeviceDetailFragment, как показано ниже, все сработало нормально.
Кроме того, спасибо Хитешу Пателю за то, что собрал быструю рабочую версию этой технологии на GitHub: https://github.com/hiteshbpatel
<LinearLayout
android:layout_width="match_parent"
android:id="@ id/linearLayout"
android:layout_height="0dp"
android:orientation="vertical"
android:layout_alignParentTop="true"
android:layout_weight="0.9">
<fragment
class="com.example.shriyanshu.wifisharefilesexampleandroid.DeviceListFragment"
android:id="@ id/fragment_list"
android:layout_width="match_parent"
android:layout_height="@dimen/phone_list_height"
tools:layout="@layout/device_list">
</fragment>
<fragment
class="com.example.shriyanshu.wifisharefilesexampleandroid.DeviceDetailFragment"
android:id="@ id/fragment_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout="@layout/device_detail">
</fragment>
</LinearLayout>