嗨,大家好我想要它,以便用户可以选择单位进行计算。
我只是单选按钮,我正在尝试选择一个单选按钮,获取存储在那里的字符串的值并显示它。
到目前为止,我正在接受我的选择,当我开始设置应用程序崩溃的价值时。
任何想法或帮助都会很棒!
public void Un()
{
Mq = (EditText) findViewById(R.id.u1);
EditText c = (EditText) findViewById(R.id.u1);
c.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
show2();
}
});
}
public void show2() {
final Dialog h = new Dialog(Sol.this);
h.setTitle("Units");
h.setContentView(R.layout.molunit);
Button b1 = (Button) h.findViewById(R.id.b1);
Button b2 = (Button) h.findViewById(R.id.b2);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
RadioGroup types = (RadioGroup) findViewById(R.id.radioUnits);
switch (types.getCheckedRadioButtonId()) {
// case R.id.M:
case R.id.M:
Mq.setText("M");
// h.dismiss();
case R.id.mM:
Mq.setText("mM");
// h.dismiss();
case R.id.uM:
Mq.setText("M");
// h.dismiss();
case R.id.pM:
Mq.setText("M");
// h.dismiss();
case R.id.cM:
Mq.setText("M");
// h.dismiss();
}
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
h.dismiss();
}
});
h.show();
}
<EditText
android:id="@+id/u1"
android:background="@android:color/holo_red_dark"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/Text1"
android:layout_above="@+id/Text2"
android:layout_toRightOf="@+id/button5"
android:layout_toEndOf="@+id/button5"
android:inputType="textAutoComplete"
/>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent">
<RadioGroup
android:id="@+id/radioUnits"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:layout_width="match_parent"
android:layout_height="75dp"
android:text="@string/M"
android:id="@+id/M"
android:layout_gravity="center_horizontal"
android:checked="true" />
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/mM"
android:inputType="text"
android:id="@+id/mM"
android:layout_gravity="center_horizontal"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/uM"
android:id="@+id/uM"
android:layout_gravity="center_horizontal"
android:layout_weight="0.09"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/pM"
android:id="@+id/pM"
android:layout_gravity="center_horizontal"
android:layout_weight="0.09"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/cM"
android:id="@+id/cM"
android:layout_gravity="center_horizontal"
android:layout_weight="0.09"/>
</RadioGroup>
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set"
android:layout_weight="0.15"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="68dp"
android:layout_marginBottom="133dp" />
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel"
android:layout_gravity="right"
android:layout_alignTop="@+id/b1"
android:layout_toRightOf="@+id/b1"
android:layout_toEndOf="@+id/b1"
android:layout_marginLeft="77dp" />
</RelativeLayout>
在Logs中,当我点击set(b1)
时,我得到了这个12-05 16:38:55.406 743-743/com.example.se414011.biochem1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.se414011.biochem1.Sol$8.onClick(Sol.java:262)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
有更多信息后编辑
了解h.setContentView(R.layout.Units)
和
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
addListenerOnButton();
...
变化
findViewById(R.id.radioUnits)
到
h.findViewById(R.id.radioUnits)
说明:radioUnits
位于units.xml
,并设置为对话框h
的布局。
findViewById
在没有任何对象之前查看活动的布局,其中setContentView(R.layout.main)
缺少视图findViewById
正在寻找。