我非常肯定这里有很多类似的问题,但没有一个能帮我解决这个问题。
假设我有一个主菜单,一个仪表板布局,还有4个按钮。 A,B,C,d
当我按A时,Iam开始新的活动A.在此活动A中,有一个链接Iam从json项目。它可以正常使用URL,但是当我试图从编辑文本/ textview中获取值时会崩溃。
String url = "http://webservice.xxx.com/webservice/getLocationList.php?lat="+ latValue +"&lng="+ lngValue +"";
latValue 和 lngValue 来自 R.id.test 中的编辑框,这里是EditText的XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/latValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:text="54.9933628" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/lngValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="9.8595655"
android:inputType="numberDecimal" />
</LinearLayout>
在这里,我想从中获取价值并将其放入链接中。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText lat_source = (EditText)findViewById(R.id.latValue);
here crash --> Double sourceLat = Double.parseDouble(lat_source.getText().toString());
EditText lng_source = (EditText)findViewById(R.id.lngValue);
Double sourceLng = Double.parseDouble(lng_source.getText().toString());
String url = "http://webservice.xxx.com/webservice/getLocationList.php?lat="+ sourceLat +"&lng="+ sourceLng +"";
Log.d(TAG, "My URL is = " + url);
日志
02-15 11:37:41.826: E/AndroidRuntime(14267): at android.os.Looper.loop(Looper.java:137)
02-15 11:37:41.826: E/AndroidRuntime(14267): at android.app.ActivityThread.main(ActivityThread.java:4898)
02-15 11:37:41.826: E/AndroidRuntime(14267): at java.lang.reflect.Method.invokeNative(Native Method)
02-15 11:37:41.826: E/AndroidRuntime(14267): at java.lang.reflect.Method.invoke(Method.java:511)
02-15 11:37:41.826: E/AndroidRuntime(14267): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
02-15 11:37:41.826: E/AndroidRuntime(14267): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
02-15 11:37:41.826: E/AndroidRuntime(14267): at dalvik.system.NativeStart.main(Native Method)
02-15 11:37:41.826: E/AndroidRuntime(14267): Caused by: java.lang.NullPointerException
02-15 11:37:41.826: E/AndroidRuntime(14267): at com.androidhive.jsonparsing.LocationBased.onCreate(LocationBased.java:69)
02-15 11:37:41.826: E/AndroidRuntime(14267): at android.app.Activity.performCreate(Activity.java:5206)
02-15 11:37:41.826: E/AndroidRuntime(14267): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
02-15 11:37:41.826: E/AndroidRuntime(14267): at android.app.ActivityThread.performLaunchActivity
答案 0 :(得分:1)
LayoutInflater inflater = LayoutInflater.from(this);
LinearLayout testLayout = (LinearLayout)inflater.inflate(R.layout.test, null)
EditText lat_source = (EditText)testLayout.findViewById(R.id.latValue);
Double sourceLat = Double.parseDouble(lat_source.getText().toString());
如上所述,为了通过EditText
获取findViewById
对象,您的视图应该通过setContentView
添加到视图层次结构中,或者您可以使用inflater并使用由inflater返回的视图对象以获取EditText