- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 XML 文件中使用 onClick 设置了方法名称,但应用程序似乎找不到它。我认为这是因为应该使用警报对话框的按钮来调用该方法。任何想法将不胜感激!
主要 Activity :
public class MainActivity extends Activity {
String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void recordExpenditure(View v) {
Log.v(TAG, "User clicked Record Expenditure button");
// custom dialog
final Dialog dialog = new Dialog(v.getContext());
dialog.setContentView(R.layout.add_expenditure_dialog_layout);
dialog.setTitle("Add new expenditure");
dialog.show();
}
public void viewExpenditure(View v) {
Log.v(TAG, "User clicked View Expenditure button");
}
public void saveExpenditure(View v) {// <---- Can't find this
DatabaseHandler db = new DatabaseHandler(this);
// Inserting Contacts
Log.d(TAG, "Inserting new expenditure into database");
Log.v(TAG, "User clicked Save Expenditure button");
EditText saveExpenditureTitleText = (EditText)findViewById(R.id.expenditureTitleBox);
EditText saveExpenditureValue = (EditText)findViewById(R.id.expenditureValueBox);
String expenditureText = saveExpenditureTitleText.getText().toString();
String expenditureValue = saveExpenditureValue.getText().toString();
db.addExpenditure(new Expenditure(expenditureText, expenditureValue));
Log.v(TAG, "Recording expenditure details...\nExpenditure Title: " + expenditureText + "\nExpenditure Value: " + expenditureValue);
}
public void cancelExpenditure(View v) {
Log.v(TAG, "User clicked Cancel Expenditure button");
}
}
主布局.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/recordExpenditure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dp"
android:text="Add Expenditure"
android:onClick="recordExpenditure" />
<Button
android:id="@+id/viewExpenditure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/recordExpenditure"
android:layout_below="@+id/recordExpenditure"
android:layout_marginTop="45dp"
android:text="View Expenditure"
android:onClick="viewExpenditure" />
</RelativeLayout>
对话框.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/expenditureValueText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/expenditureTitleBox"
android:text="Expenditure Value" />
<TextView
android:id="@+id/expenditureTitleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Expenditure Title" />
<EditText
android:id="@+id/expenditureTitleBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/expenditureTitleText"
android:ems="10" />
<EditText
android:id="@+id/expenditureValueBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/expenditureValueText"
android:ems="10"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<Button
android:id="@+id/saveExpenditureDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/expenditureValueBox"
android:text="Save"
android:onClick="saveExpenditure" /> <---- Can't find this
<Button
android:id="@+id/cancelExpenditureDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/saveExpenditureDetails"
android:layout_alignBottom="@+id/saveExpenditureDetails"
android:layout_alignRight="@+id/expenditureValueBox"
android:text="Cancel"
android:onClick="cancelExpenditure" />
</RelativeLayout>
错误:
09-15 21:12:37.411: E/AndroidRuntime(818): FATAL EXCEPTION: main
09-15 21:12:37.411: E/AndroidRuntime(818): java.lang.IllegalStateException: Could not find a method saveExpenditure(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'saveExpenditureDetails'
09-15 21:12:37.411: E/AndroidRuntime(818): at android.view.View$1.onClick(View.java:3578)
最佳答案
E/AndroidRuntime(818): java.lang.IllegalStateException: Could not find a method saveExpenditure(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'saveExpenditureDetails'
您会注意到错误消息表明 Android 正在 android.view.ContextThemeWrapper
中查找 saveExpenditure(View)
,这不是您的类。这是因为对话框正在使用您的布局,而不是直接由您的 Activity 使用。 AFAIK,您需要使用 setOnClickListener()
将监听器与 Dialog
中的 Button
关联起来。
关于java - 非法状态异常,应用程序找不到类中定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18817706/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!