致命异议:主要

时间:2014-02-11 16:34:52

标签: java android eclipse

我今天开始编写应用程序,我必须说我是初学者 我正在使用Eclipse来编写Android应用程序 我刚开始构建最简单的东西,但是看起来很糟糕...... 我不明白为什么我不能这样做。
我正在尝试将文本框中编写的文本(在Android SDK中称为Edittext)复制到字符串变量。
按下按钮按钮时应该开始此过程。

这是我的代码:

public class MainActivity extends Activity  {

String verb_2;
String adjektiv_2;
String ort_2;

@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.main, menu);
    return true;
}

public void Anleitung (View view)
{
    setContentView(R.layout.instruction);
}
public void multi_2 (View view)
{
    setContentView(R.layout.multiplayer_2_1);
}

public void multi_4 (View view)
{
    setContentView(R.layout.multiplayer_4_1);
}

public void exit (View view) 
{
    finish();
    System.exit(0);
}
public void instruction_back (View view)
{
    setContentView(R.layout.activity_main);
}


public void button1 (View view)
{
    EditText nomen_2_box = (EditText)findViewById(R.id.editText1);
    String nomen_2= nomen_2_box.getText().toString();
}

最后是崩溃报告:

02-11 16:17:03.663: E/AndroidRuntime(988): FATAL EXCEPTION: main
02-11 16:17:03.663: E/AndroidRuntime(988): java.lang.IllegalStateException: Could not find a method multi_next_1(View) in the activity class com.kaltech.creasedstory.MainActivity for onClick handler on view class android.widget.Button with id 'button1'
02-11 16:17:03.663: E/AndroidRuntime(988):  at android.view.View$1.onClick(View.java:3578)
02-11 16:17:03.663: E/AndroidRuntime(988):  at android.view.View.performClick(View.java:4084)
02-11 16:17:03.663: E/AndroidRuntime(988):  at android.view.View$PerformClick.run(View.java:16966)
02-11 16:17:03.663: E/AndroidRuntime(988):  at android.os.Handler.handleCallback(Handler.java:615)
02-11 16:17:03.663: E/AndroidRuntime(988):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-11 16:17:03.663: E/AndroidRuntime(988):  at android.os.Looper.loop(Looper.java:137)
02-11 16:17:03.663: E/AndroidRuntime(988):  at android.app.ActivityThread.main(ActivityThread.java:4745)
02-11 16:17:03.663: E/AndroidRuntime(988):  at java.lang.reflect.Method.invokeNative(Native Method)
02-11 16:17:03.663: E/AndroidRuntime(988):  at java.lang.reflect.Method.invoke(Method.java:511)
02-11 16:17:03.663: E/AndroidRuntime(988):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-11 16:17:03.663: E/AndroidRuntime(988):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-11 16:17:03.663: E/AndroidRuntime(988):  at dalvik.system.NativeStart.main(Native Method)
02-11 16:17:03.663: E/AndroidRuntime(988): Caused by: java.lang.NoSuchMethodException: multi_next_1 [class android.view.View]
02-11 16:17:03.663: E/AndroidRuntime(988):  at java.lang.Class.getConstructorOrMethod(Class.java:460)
02-11 16:17:03.663: E/AndroidRuntime(988):  at java.lang.Class.getMethod(Class.java:915)
02-11 16:17:03.663: E/AndroidRuntime(988):  at android.view.View$1.onClick(View.java:3571)
02-11 16:17:03.663: E/AndroidRuntime(988):  ... 11 more

有人可以解释一下我做错了什么吗? 也许为什么?

我认为这是因为这个

  

public void button1(查看视图){           EditText nomen_2_box =   (的EditText)findViewById(R.id.editText1);
      String nomen_2 =   nomen_2_box.getText()的toString(); }

但我找不到任何解决方案:(

谢谢大家!

3 个答案:

答案 0 :(得分:4)

当您在xml中将onClick方法声明为按钮的属性时,抛出此异常:

<Button
    android:onClick="multi_next_1"/>

这告诉Android在multi_next_1中查找名为View的方法,其中包含Activity个唯一参数。你可以在你的xml中正确地声明你的方法

android:onClick="button1"

或更改方法的名称以匹配xml中的声明,如下所示:

public void multi_next_1 (View view)
{
    EditText nomen_2_box = (EditText)findViewById(R.id.editText1);
    String nomen_2= nomen_2_box.getText().toString();
}

就我个人而言,我会选择一个camelCase名称,但这是风格问题,我想。如果有任何事情不够清楚,请告诉我。

答案 1 :(得分:0)

将方法名称从button1更改为multi_next_1

答案 2 :(得分:0)

你的问题在这里

public void button1 (View view)
{
    EditText nomen_2_box = (EditText)findViewById(R.id.editText1);
    String nomen_2= nomen_2_box.getText().toString();
}

只需将其更改为

即可
public void multi_next_1 (View view)
    {
        EditText nomen_2_box = (EditText)findViewById(R.id.editText1);
        String nomen_2= nomen_2_box.getText().toString();
    }
相关问题