2016-03-03 47 views
0

在Android中,我試圖打開一個彈出窗口,得到一些用戶輸入打開一個彈出窗口,但代碼Activity.java失敗的的Android如何在一個onclick功能

if (activity == null && children == null && fragments == null && loaders == null 
      && mVoiceInteractor == null) { 
     return null; 
    } 

下面是XML文件與該按鈕來打開彈出窗口,彈出窗口

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:padding="15dip" 
    android:layout_marginTop="10dip" 
    android:text="Manually Enter Latitude and Longitude" 
    android:background="#778899" 
    /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:gravity="center_horizontal" 
    android:paddingLeft="25dp" 
    android:paddingRight="25dp" 
    android:paddingTop="10dp" 
    android:paddingBottom="10dp" 
    android:layout_marginTop="10dp" 
    android:text="Latitude" 
    android:background="#778899" 
    /> 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    > 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="5dp" 
     android:paddingLeft="30dip" 
     android:paddingRight="30dp" 
     android:paddingTop="20dp" 
     android:paddingBottom="20dp" 
     android:textSize="14sp" 
     android:text="Decimal\nDegrees" 
     android:id="@+id/button_lat_dec_deg" 
     android:onClick="enter_lat_dec_deg"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="50dp" 
     android:paddingLeft="10dip" 
     android:paddingRight="10dp" 
     android:paddingTop="5dp" 
     android:paddingBottom="5dp" 
     android:layout_gravity="center" 
     android:text="OR" 
     android:background="#778899" 
     /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="30dp" 
     android:layout_marginRight="5dp" 
     android:textSize="14sp" 
     android:text="Degrees,\nMinutes and Seconds" 
     android:id="@+id/button_lat_deg_min_sec" 
     android:onClick="enter_lat_d_m_s" 
     android:layout_gravity="right" 
     android:singleLine="false" /> 

</LinearLayout> 

<View android:id="@+id/separator" 
    android:background="#000000" 
    android:layout_width = "fill_parent" 
    android:layout_height="1dp" 
    android:layout_marginTop="30dp" 
    android:layout_centerVertical ="true" 
    android:layout_alignParentTop="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:gravity="center_horizontal" 
    android:paddingLeft="25dip" 
    android:paddingRight="25dip" 
    android:paddingTop="10dp" 
    android:paddingBottom="10dp" 
    android:layout_marginTop="10dp" 
    android:text="Longitude" 
    android:background="#778899" 
    /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    > 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="5dp" 
     android:paddingLeft="30dip" 
     android:paddingRight="30dp" 
     android:paddingTop="20dp" 
     android:paddingBottom="20dp" 
     android:textSize="14sp" 
     android:text="Decimal\nDegrees" 
     android:id="@+id/button_lon_dec_deg" 
     android:onClick="enter_lon_dec_deg"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="50dp" 
     android:paddingLeft="10dip" 
     android:paddingRight="10dp" 
     android:paddingTop="5dp" 
     android:paddingBottom="5dp" 
     android:layout_gravity="center" 
     android:text="OR" 
     android:background="#778899" 
     /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="30dp" 
     android:layout_marginRight="5dp" 
     android:textSize="14sp" 
     android:text="Degrees\nMinutes and Seconds" 
     android:id="@+id/button_lon_deg_min_sec" 
     android:onClick="enter_lon_d_m_s" 
     android:layout_gravity="right" 
     android:singleLine="false" /> 

    </LinearLayout> 

</LinearLayout> 




<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/manually_entry" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="Please enter the decimal Latitude" 
    android:singleLine="true" 
    /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="Negative is South" 
    android:singleLine="true" 
    /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:inputType="numberDecimal|numberSigned" 
    android:id="@+id/enter_decimal_number" /> 

</LinearLayout> 

的XML和的onclick函數的代碼的佈局是

public void enter_lat_dec_deg(View v) { 

    layout3 = inflater.inflate(R.layout.manually_enter_numbers, (ViewGroup) findViewById(R.id.manually_entry)); 

    enter_manual_dec_deg = new PopupWindow(layout3 , 700,900,true); // width, height 
    layout3.post(new Runnable() { 
     public void run() { 
      enter_manual_dec_deg.showAtLocation(layout3, Gravity.CENTER, 0, 200); 
     } 
    }); 
    input = (EditText) findViewById(R.id.enter_decimal_number); 
    decimal_input = Float.valueOf(input.getText().toString()); 

    Toast.makeText(GPSTest.this, "this is the decimal input !!!" + decimal_input, 
        Toast.LENGTH_LONG).show(); 


} 

我在這工作正常,但相同的代碼不在這裏工作了相同的應用程序的另一個彈出窗口。

我很新到Android編程可能已經取得了比較明顯的錯誤,但我已經做了很多谷歌上搜索,發現沒有解決,因此任何建議,將熱切期盼的問題。 請詢問您是否希望我發佈更多的代碼。

Android的工作室事件日誌有:

14時03分52秒會議 'GPSTest':在java.nio的推出技嘉-guru__gx-487d40a0 14時04分53秒空 java.nio.BufferOverflowException .HeapByteBuffer.put在(HeapByteBuffer.java:206) 在com.android.ddmlib.JdwpPacket.movePacket(JdwpPacket.java:235) 在com.android.ddmlib.Debugger.sendAndConsume(Debugger.java:347) 的COM .android.ddmlib.Client.forwardPacketToDebugger(Client.java:709) 在com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:346) 在com.android.ddmlib.MonitorThread.run(MonitorThread.java:265)

14時04分53秒空 java.nio.BufferOverflowException 在java.nio.HeapByteBuffer.put(HeapByteBuffer.java:206) 在com.android.ddmlib.JdwpPacket.movePacket(JdwpPacket.java:235) 在com.android.ddmlib.Debugger.sendAndConsume(Debugger.java:347) 在com.android.ddmlib.Client.forwardPacketToDebugger(Client.java :709) 在com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:346) 在com.android.ddmlib.MonitorThread.run(MonitorThread.java:265)

14:0 5:26執行的任務:[:應用:assembleDebug] 14時05分26秒搖籃生成於java.nio.HeapByteBuffer.put(HeapByteBuffer.java完成了679ms 14時48分36秒空 java.nio.BufferOverflowException : 206) 在com.android.ddmlib.JdwpPacket.movePacket(JdwpPacket.java:235) 在com.android.ddmlib.Debugger.sendAndConsume(Debugger.java:347) 在com.android.ddmlib.Client.forwardPacketToDebugger( Client.java:709) 在com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:346) 在com.android.ddmlib.MonitorThread.run(MonitorThread.java:265)

這裏是logcat:

03-03 14:45:49.629 18174-18174 /? d/AndroidRuntime:關閉VM 03-03 14:45:49.629 18174-18174 /? W/dalvikvm:線程ID = 1:螺紋用未捕獲的異常退出(組= 0x4165cd58) 03-03 14:45:49.649 18174-18180 /?D/dalvikvm:調試器已分離;對象註冊表有3717個條目 03-03 14:45:49.649 18174-18174 /? E/AndroidRuntime:致命例外:main 進程:com.example.david.gpstest,PID:18174 java.lang.IllegalStateException:無法在android.view.View中執行活動 的方法$ 1.onClick(View.java :3823) at android.view.View.performClick(View.java:4438) at android.view.View $ PerformClick.run(View.java:18439) at android.os.Handler.handleCallback(Handler.java :733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5095 ) at java.lang.reflect.Meth od.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786) at com .android.internal.os.ZygoteInit.main(ZygoteInit.java:602) at dalvik.system.NativeStart.main(Native Method) 導致:java.lang.reflect.InvocationTargetException at java.lang.reflect.Method .invokeNative(本地方法) at android.view.View $ 1.onClick(View.java:3818) at android.view.View.performClick(java.lang.String.JavaScript.java:515) (View.java:4438) at androi d.view.View $ PerformClick.run(View.java:18439) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5095) 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:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:602) at dalvik.system.NativeStart.main(Native Method) 引起:java.lang.NullPointerException at com.example.david.gpstest.GPSTest.enter_lat_dec_deg(GPSTest.java:156) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang。反射。方法.invoke(Method.java:515) 在android.view.View $ 1.onClick(View.java:3818) at android.view.View.performClick(View.java:4438) at android.view .View android.os.Handler.dispatchMessage(Handler.java:95) android.os.Handler.handleCallback(Handler.java:733) .Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5095) 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:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) at dalvik.system.NativeStart.main (Native Method) 03-03 14:45:52.259 18174-18174/com.example.david.gpstest I/Process:發送信號。PID:18174 SIG:9

的代碼無法在該行:

 layout3 = inflater.inflate(R.layout.manually_enter_numbers, (ViewGroup) findViewById(R.id.manually_entry)); 
+1

請發佈logcat異常,並確保您提供的代碼發生異常。你已經發布的內容不夠。 – pleft

+0

我編輯了原始問題以包含Android Studio事件日誌和logcat。 –

回答

0

大衛,你好了自己在這裏。這是設計錯誤。請重新設計您的應用,以使用活動而不是彈出窗口。祝你今天愉快。