onClick 按钮 Android
onClick button Android
我是 Android 开发的初学者,所以我使用基于克单位转换的 Eclipse 创建了一个 Android 应用程序,但它不起作用。
我的 Android 应用程序的概念是我使用的导航抽屉包含三个项目:Home(Accueil)、Converter(Convertisseur) 和 About(A Propos)。
所以当我点击转换器选项时,它必须显示一个包含克单位转换的片段。当我输入要转换的值和 select 我想要的转换单位时,当我单击“转换”按钮 (Convertir) 时,应用程序会堆栈并自行关闭。
谁能帮帮我!
这是我的片段 class :
package com.hw.converter;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class ConverterFragment extends Fragment {
String[] units;
Spinner spn1, spn2;
EditText editValue;
TextView tvResult;
double value;
Button myBtn;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_converter, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getView().getContext(),
R.array.units, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spn1 = (Spinner)getView().findViewById(R.id.spnUnits1);
spn2 = (Spinner)getView().findViewById(R.id.spnUnits2);
units = getResources().getStringArray(R.array.units);
spn1.setAdapter(adapter);
spn2.setAdapter(adapter);
}
public void convertir(View view){
String edit = editValue.getText().toString();
if(edit == null || edit.isEmpty()) {
value = 0.0;
} else {
value = Double.parseDouble(edit);
}
tvResult = (TextView)getView().findViewById(R.id.tvResult);
int choix1 = spn1.getSelectedItemPosition();
int choix2 = spn2.getSelectedItemPosition();
switch(choix1){
case 0:{
switch(choix2){
case 0:
tvResult.setText(value+" mg");break;
case 1:
value/=10;
tvResult.setText(value+" cg");break;
case 2:
value/=100;
tvResult.setText(value+" dg");break;
case 3:
value/=1000;
tvResult.setText(value+" g");break;
case 4:
value/=10000;
tvResult.setText(value+" dag");break;
case 5:
value/=100000;
tvResult.setText(value+" hg");break;
case 6:
value/=1000000;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;}
case 1:{
switch(choix2){
case 0:
value*=10;
tvResult.setText(value+" mg");break;
case 1:
editValue.setText(value+" cg");break;
case 2:
value/=10;
tvResult.setText(value+" dg");break;
case 3:
value/=100;
tvResult.setText(value+" g");break;
case 4:
value/=1000;
tvResult.setText(value+" dag");break;
case 5:
value/=10000;
tvResult.setText(value+" hg");break;
case 6:
value/=100000;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 2:{
switch(choix2){
case 0:
value*=100;
tvResult.setText(value+" mg");break;
case 1:
value*=10;
tvResult.setText(value+" cg");break;
case 2:
tvResult.setText(value+" dg");break;
case 3:
value/=10;
tvResult.setText(value+" g");break;
case 4:
value/=100;
tvResult.setText(value+" dag");break;
case 5:
value/=1000;
tvResult.setText(value+" hg");break;
case 6:
value/=10000;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 3:{
switch(choix2){
case 0:
value*=1000;
tvResult.setText(value+" mg");break;
case 1:
value*=100;
tvResult.setText(value+" cg");break;
case 2:
value*=10;
tvResult.setText(value+" dg");break;
case 3:
tvResult.setText(value+" g");break;
case 4:
value/=10;
tvResult.setText(value+" dag");break;
case 5:
value/=100;
tvResult.setText(value+" hg");break;
case 6:
value/=1000;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 4:
{switch(choix2){
case 0:
value*=10000;
tvResult.setText(value+" mg");break;
case 1:
value*=1000;
tvResult.setText(value+" cg");break;
case 2:
value*=100;
tvResult.setText(value+" dg");break;
case 3:
value*=10;
tvResult.setText(value+" g");break;
case 4:
tvResult.setText(value+" dag");break;
case 5:
value/=10;
tvResult.setText(value+" hg");break;
case 6:
value/=100;
editValue.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 5:{
switch(choix2){
case 0:
value*=100000;
tvResult.setText(value+" mg");break;
case 1:
value*=10000;
tvResult.setText(value+" cg");break;
case 2:
value*=1000;
tvResult.setText(value+" dg");break;
case 3:
value*=100;
tvResult.setText(value+" g");break;
case 4:
value*=10;
tvResult.setText(value+" dag");break;
case 5:
tvResult.setText(value+" hg");break;
case 6:
value/=10;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 6:{
switch(choix2){
case 0:
value*=1000000;
tvResult.setText(value+" mg");break;
case 1:
value*=100000;
tvResult.setText(value+" cg");break;
case 2:
value*=10000;
tvResult.setText(value+" dg");break;
case 3:
value*=1000;
tvResult.setText(value+" g");break;
case 4:
value*=100;
tvResult.setText(value+" dag");break;
case 5:
value*=10;
tvResult.setText(value+" hg");break;
case 6:
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
}
}
}
这是我的转换器布局代码:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.hw.converter.ConverterActivity" >
<ListView android:id="@+id/drawerList"
android:layout_width="240dp"
android:layout_height="match_parent"
android:entries="@array/mymenu"
android:layout_gravity="start">
</ListView>
<RelativeLayout android:id="@+id/convertContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/tvTitle"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:paddingTop="25dp"
android:layout_below="@id/tvTitle"
android:text="@string/tv1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Spinner
android:id="@+id/spnUnits1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tv1"
android:layout_marginLeft="41dp"
android:layout_marginStart="41dp"
android:layout_marginTop="30dp"
android:layout_toEndOf="@+id/tv1"
android:layout_toRightOf="@+id/tv1"
/>
<EditText
android:id="@+id/editQte"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_below="@+id/tv1"
android:inputType="number"
android:hint="@string/editHint"
>
</EditText>
<Spinner
android:id="@+id/spnUnits2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tv2"
android:layout_below="@+id/editQte"
android:layout_marginLeft="41dp"
android:layout_marginStart="41dp"
android:layout_marginTop="30dp"
android:layout_toEndOf="@+id/tv2"
android:layout_toRightOf="@+id/tv2"
/>
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:paddingTop="25dp"
android:layout_marginTop="20dp"
android:layout_below="@id/tv1"
android:text="@string/tv2"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
<Button
android:id="@+id/btnConvert"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@+id/spnUnits2"
android:layout_marginTop="56dp"
android:layout_centerInParent="true"
android:text="@string/btnConvert"
android:onClick="com.hw.converter.ConverterFragment.convertir" />
<TextView
android:id="@+id/tvResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnConvert"
android:layout_marginTop="24dp"
android:text="@string/tvResult"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
编辑:现在错误日志有意义了,请你帮忙!
这是我更改后得到的错误日志:
05-13 10:30:29.972: E/AndroidRuntime(5621): FATAL EXCEPTION: main
05-13 10:30:29.972: E/AndroidRuntime(5621): Process: com.hw.converter, PID: 5621
05-13 10:30:29.972: E/AndroidRuntime(5621): java.lang.IllegalStateException: Could not find a method com.hw.converter.ConverterFragment.convertir(View) in the activity class com.hw.converter.MainActivity for onClick handler on view class android.widget.Button with id 'btnConvert'
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.view.View.onClick(View.java:3864)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.view.View.performClick(View.java:4492)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.view.View$PerformClick.run(View.java:18568)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.os.Handler.handleCallback(Handler.java:733)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.os.Handler.dispatchMessage(Handler.java:95)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.os.Looper.loop(Looper.java:136)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.app.ActivityThread.main(ActivityThread.java:5021)
05-13 10:30:29.972: E/AndroidRuntime(5621): at java.lang.reflect.Method.invokeNative(Native Method)
05-13 10:30:29.972: E/AndroidRuntime(5621): at java.lang.reflect.Method.invoke(Method.java:515)
05-13 10:30:29.972: E/AndroidRuntime(5621): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
05-13 10:30:29.972: E/AndroidRuntime(5621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
05-13 10:30:29.972: E/AndroidRuntime(5621): at dalvik.system.NativeStart.main(Native Method)
05-13 10:30:29.972: E/AndroidRuntime(5621): Caused by: java.lang.NoSuchMethodException: com.hw.converter.ConverterFragment.convertir [class android.view.View]
05-13 10:30:29.972: E/AndroidRuntime(5621): at java.lang.Class.getConstructorOrMethod(Class.java:472)
05-13 10:30:29.972: E/AndroidRuntime(5621): at java.lang.Class.getMethod(Class.java:857)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.view.View.onClick(View.java:3857)
05-13 10:30:29.972: E/AndroidRuntime(5621): ... 11 more
it4Astuces,
按钮的 onClick 动作的默认签名应该是
public void NameOfTheMethod(View view) {
}
所以把你的改成
public void convertir(View view){
}
您还没有粘贴您的错误日志 :) 虽然我相信它一定是说找不到方法 'convertir'。这是因为 android 将查找将视图作为参数的方法 convertir :)
public void convertir(View view) 与 public void convertir() 不同。因此,请更新您的方法以符合 android 的要求,您应该可以开始了:)
编辑
根据您在评论中发布的错误日志,我认为崩溃的原因是
value = Double.parseDouble(editValue.getText().toString());
虽然我不能确定你发布的错误日志至少对我来说没有多大意义:(你可以按照下面的方式更改你的代码,让我知道它是否解决了你的问题
String editValue = editValue.getText().toString();
if(editValue == null || editValue.isEmpty()) {
value = 0.0;
} else {
value = Double.parseDouble(editValue);
}
空值或空值在 JAVA Double.parseDouble
中不被视为可解析的
问题应该解决了:)编码愉快
xml 文件
<Button
android:id="@+id/btnConvert"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@+id/spnUnits2"
android:layout_marginTop="56dp"
android:layout_centerInParent="true"
android:text="@string/btnConvert"
android:onClick="onClick" />
你的主文件
public class ConverterFragment extends Fragment {
String[] units;
Spinner spn1, spn2;
EditText editValue;
TextView tvResult;
double value;
Button myBtn;
.....
.....
public void onClick(View view)
{
//action you want on button clicked
}
}
我是 Android 开发的初学者,所以我使用基于克单位转换的 Eclipse 创建了一个 Android 应用程序,但它不起作用。
我的 Android 应用程序的概念是我使用的导航抽屉包含三个项目:Home(Accueil)、Converter(Convertisseur) 和 About(A Propos)。 所以当我点击转换器选项时,它必须显示一个包含克单位转换的片段。当我输入要转换的值和 select 我想要的转换单位时,当我单击“转换”按钮 (Convertir) 时,应用程序会堆栈并自行关闭。
谁能帮帮我!
这是我的片段 class :
package com.hw.converter;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class ConverterFragment extends Fragment {
String[] units;
Spinner spn1, spn2;
EditText editValue;
TextView tvResult;
double value;
Button myBtn;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_converter, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getView().getContext(),
R.array.units, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spn1 = (Spinner)getView().findViewById(R.id.spnUnits1);
spn2 = (Spinner)getView().findViewById(R.id.spnUnits2);
units = getResources().getStringArray(R.array.units);
spn1.setAdapter(adapter);
spn2.setAdapter(adapter);
}
public void convertir(View view){
String edit = editValue.getText().toString();
if(edit == null || edit.isEmpty()) {
value = 0.0;
} else {
value = Double.parseDouble(edit);
}
tvResult = (TextView)getView().findViewById(R.id.tvResult);
int choix1 = spn1.getSelectedItemPosition();
int choix2 = spn2.getSelectedItemPosition();
switch(choix1){
case 0:{
switch(choix2){
case 0:
tvResult.setText(value+" mg");break;
case 1:
value/=10;
tvResult.setText(value+" cg");break;
case 2:
value/=100;
tvResult.setText(value+" dg");break;
case 3:
value/=1000;
tvResult.setText(value+" g");break;
case 4:
value/=10000;
tvResult.setText(value+" dag");break;
case 5:
value/=100000;
tvResult.setText(value+" hg");break;
case 6:
value/=1000000;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;}
case 1:{
switch(choix2){
case 0:
value*=10;
tvResult.setText(value+" mg");break;
case 1:
editValue.setText(value+" cg");break;
case 2:
value/=10;
tvResult.setText(value+" dg");break;
case 3:
value/=100;
tvResult.setText(value+" g");break;
case 4:
value/=1000;
tvResult.setText(value+" dag");break;
case 5:
value/=10000;
tvResult.setText(value+" hg");break;
case 6:
value/=100000;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 2:{
switch(choix2){
case 0:
value*=100;
tvResult.setText(value+" mg");break;
case 1:
value*=10;
tvResult.setText(value+" cg");break;
case 2:
tvResult.setText(value+" dg");break;
case 3:
value/=10;
tvResult.setText(value+" g");break;
case 4:
value/=100;
tvResult.setText(value+" dag");break;
case 5:
value/=1000;
tvResult.setText(value+" hg");break;
case 6:
value/=10000;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 3:{
switch(choix2){
case 0:
value*=1000;
tvResult.setText(value+" mg");break;
case 1:
value*=100;
tvResult.setText(value+" cg");break;
case 2:
value*=10;
tvResult.setText(value+" dg");break;
case 3:
tvResult.setText(value+" g");break;
case 4:
value/=10;
tvResult.setText(value+" dag");break;
case 5:
value/=100;
tvResult.setText(value+" hg");break;
case 6:
value/=1000;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 4:
{switch(choix2){
case 0:
value*=10000;
tvResult.setText(value+" mg");break;
case 1:
value*=1000;
tvResult.setText(value+" cg");break;
case 2:
value*=100;
tvResult.setText(value+" dg");break;
case 3:
value*=10;
tvResult.setText(value+" g");break;
case 4:
tvResult.setText(value+" dag");break;
case 5:
value/=10;
tvResult.setText(value+" hg");break;
case 6:
value/=100;
editValue.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 5:{
switch(choix2){
case 0:
value*=100000;
tvResult.setText(value+" mg");break;
case 1:
value*=10000;
tvResult.setText(value+" cg");break;
case 2:
value*=1000;
tvResult.setText(value+" dg");break;
case 3:
value*=100;
tvResult.setText(value+" g");break;
case 4:
value*=10;
tvResult.setText(value+" dag");break;
case 5:
tvResult.setText(value+" hg");break;
case 6:
value/=10;
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
case 6:{
switch(choix2){
case 0:
value*=1000000;
tvResult.setText(value+" mg");break;
case 1:
value*=100000;
tvResult.setText(value+" cg");break;
case 2:
value*=10000;
tvResult.setText(value+" dg");break;
case 3:
value*=1000;
tvResult.setText(value+" g");break;
case 4:
value*=100;
tvResult.setText(value+" dag");break;
case 5:
value*=10;
tvResult.setText(value+" hg");break;
case 6:
tvResult.setText(value+" kg");break;
default:
tvResult.setText(value+" g");break;
}break;
}
}
}
}
这是我的转换器布局代码:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.hw.converter.ConverterActivity" >
<ListView android:id="@+id/drawerList"
android:layout_width="240dp"
android:layout_height="match_parent"
android:entries="@array/mymenu"
android:layout_gravity="start">
</ListView>
<RelativeLayout android:id="@+id/convertContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/tvTitle"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:paddingTop="25dp"
android:layout_below="@id/tvTitle"
android:text="@string/tv1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Spinner
android:id="@+id/spnUnits1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tv1"
android:layout_marginLeft="41dp"
android:layout_marginStart="41dp"
android:layout_marginTop="30dp"
android:layout_toEndOf="@+id/tv1"
android:layout_toRightOf="@+id/tv1"
/>
<EditText
android:id="@+id/editQte"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_below="@+id/tv1"
android:inputType="number"
android:hint="@string/editHint"
>
</EditText>
<Spinner
android:id="@+id/spnUnits2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tv2"
android:layout_below="@+id/editQte"
android:layout_marginLeft="41dp"
android:layout_marginStart="41dp"
android:layout_marginTop="30dp"
android:layout_toEndOf="@+id/tv2"
android:layout_toRightOf="@+id/tv2"
/>
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:paddingTop="25dp"
android:layout_marginTop="20dp"
android:layout_below="@id/tv1"
android:text="@string/tv2"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
<Button
android:id="@+id/btnConvert"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@+id/spnUnits2"
android:layout_marginTop="56dp"
android:layout_centerInParent="true"
android:text="@string/btnConvert"
android:onClick="com.hw.converter.ConverterFragment.convertir" />
<TextView
android:id="@+id/tvResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnConvert"
android:layout_marginTop="24dp"
android:text="@string/tvResult"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
编辑:现在错误日志有意义了,请你帮忙! 这是我更改后得到的错误日志:
05-13 10:30:29.972: E/AndroidRuntime(5621): FATAL EXCEPTION: main
05-13 10:30:29.972: E/AndroidRuntime(5621): Process: com.hw.converter, PID: 5621
05-13 10:30:29.972: E/AndroidRuntime(5621): java.lang.IllegalStateException: Could not find a method com.hw.converter.ConverterFragment.convertir(View) in the activity class com.hw.converter.MainActivity for onClick handler on view class android.widget.Button with id 'btnConvert'
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.view.View.onClick(View.java:3864)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.view.View.performClick(View.java:4492)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.view.View$PerformClick.run(View.java:18568)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.os.Handler.handleCallback(Handler.java:733)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.os.Handler.dispatchMessage(Handler.java:95)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.os.Looper.loop(Looper.java:136)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.app.ActivityThread.main(ActivityThread.java:5021)
05-13 10:30:29.972: E/AndroidRuntime(5621): at java.lang.reflect.Method.invokeNative(Native Method)
05-13 10:30:29.972: E/AndroidRuntime(5621): at java.lang.reflect.Method.invoke(Method.java:515)
05-13 10:30:29.972: E/AndroidRuntime(5621): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
05-13 10:30:29.972: E/AndroidRuntime(5621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
05-13 10:30:29.972: E/AndroidRuntime(5621): at dalvik.system.NativeStart.main(Native Method)
05-13 10:30:29.972: E/AndroidRuntime(5621): Caused by: java.lang.NoSuchMethodException: com.hw.converter.ConverterFragment.convertir [class android.view.View]
05-13 10:30:29.972: E/AndroidRuntime(5621): at java.lang.Class.getConstructorOrMethod(Class.java:472)
05-13 10:30:29.972: E/AndroidRuntime(5621): at java.lang.Class.getMethod(Class.java:857)
05-13 10:30:29.972: E/AndroidRuntime(5621): at android.view.View.onClick(View.java:3857)
05-13 10:30:29.972: E/AndroidRuntime(5621): ... 11 more
it4Astuces,
按钮的 onClick 动作的默认签名应该是
public void NameOfTheMethod(View view) {
}
所以把你的改成
public void convertir(View view){
}
您还没有粘贴您的错误日志 :) 虽然我相信它一定是说找不到方法 'convertir'。这是因为 android 将查找将视图作为参数的方法 convertir :)
public void convertir(View view) 与 public void convertir() 不同。因此,请更新您的方法以符合 android 的要求,您应该可以开始了:)
编辑 根据您在评论中发布的错误日志,我认为崩溃的原因是
value = Double.parseDouble(editValue.getText().toString());
虽然我不能确定你发布的错误日志至少对我来说没有多大意义:(你可以按照下面的方式更改你的代码,让我知道它是否解决了你的问题
String editValue = editValue.getText().toString();
if(editValue == null || editValue.isEmpty()) {
value = 0.0;
} else {
value = Double.parseDouble(editValue);
}
空值或空值在 JAVA Double.parseDouble
中不被视为可解析的问题应该解决了:)编码愉快
xml 文件
<Button
android:id="@+id/btnConvert"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@+id/spnUnits2"
android:layout_marginTop="56dp"
android:layout_centerInParent="true"
android:text="@string/btnConvert"
android:onClick="onClick" />
你的主文件
public class ConverterFragment extends Fragment {
String[] units;
Spinner spn1, spn2;
EditText editValue;
TextView tvResult;
double value;
Button myBtn;
.....
.....
public void onClick(View view)
{
//action you want on button clicked
}
}