当pressing按钮切换视图错误 [英] Error when pressing button to switch views

查看:131
本文介绍了当pressing按钮切换视图错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在pressing一键切换的意图,我得到了芝加哥的列车追踪器意外停止和一个logcat的:

  09-02 19:54:15.745:D / AndroidRuntime(20681):关闭虚拟机
09-02 19:54:15.745:W / dalvikvm(20681):主题ID = 1:螺纹退出与未捕获的异常(组= 0x41ab6700)
09-02 19:54:15.755:E / AndroidRuntime(20681):致命异常:主要
09-02 19:54:15.755:E / AndroidRuntime(20681):java.lang.IllegalStateException:找不到在活动课com.dev.chicagotraintracker.MainActivity对视图类的android onclick处理方法的sendMessage(查看)。 widget.ImageButton id为按钮
09-02 19:54:15.755:E / AndroidRuntime(20681):在android.view.View $ 1.onClick(View.java:3620)
09-02 19:54:15.755:E / AndroidRuntime(20681):在android.view.View.performClick(View.java:4240)
09-02 19:54:15.755:E / AndroidRuntime(20681):在android.view.View $ PerformClick.run(View.java:17721)
09-02 19:54:15.755:E / AndroidRuntime(20681):在android.os.Handler.handleCallback(Handler.java:730)
09-02 19:54:15.755:E / AndroidRuntime(20681):在android.os.Handler.dispatchMessage(Handler.java:92)
09-02 19:54:15.755:E / AndroidRuntime(20681):在android.os.Looper.loop(Looper.java:137)
09-02 19:54:15.755:E / AndroidRuntime(20681):在android.app.ActivityThread.main(ActivityThread.java:5103)
09-02 19:54:15.755:E / AndroidRuntime(20681):在java.lang.reflect.Method.invokeNative(本机方法)
09-02 19:54:15.755:E / AndroidRuntime(20681):在java.lang.reflect.Method.invoke(Method.java:525)
09-02 19:54:15.755:E / AndroidRuntime(20681):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)
09-02 19:54:15.755:E / AndroidRuntime(20681):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-02 19:54:15.755:E / AndroidRuntime(20681):在dalvik.system.NativeStart.main(本机方法)
09-02 19:54:15.755:E / AndroidRuntime(20681):java.lang.NoSuchMethodException:产生的原因的sendMessage [类android.view.View]
09-02 19:54:15.755:E / AndroidRuntime(20681):在java.lang.Class.getConstructorOrMethod(Class.java:423)
09-02 19:54:15.755:E / AndroidRuntime(20681):在java.lang.Class.getMethod(Class.java:787)
09-02 19:54:15.755:E / AndroidRuntime(20681):在android.view.View $ 1.onClick(View.java:3613)
09-02 19:54:15.755:E / AndroidRuntime(20681):11 ...更多
09-02 19:54:16.875:I /流程(20681):发送信号。 PID:20681 SIG:9
 

我的code是:

MainActivity.java

 包com.dev.chicagotraintracker;

进口android.app.Activity;
进口android.content.Intent;
进口android.os.Bundle;
进口android.view.View;
进口android.widget.Button;

公共类MainActivity延伸活动{


@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);}


    公共无效login_Click(视图v){;
意图myIntent =新的意图(MainActivity.this,Screenmap.class);
startActivityForResult(myIntent,0);


    }

    公共无效的onClick(视图v){
        // TODO自动生成方法存根

    }

;

}
 

Screenmap.java

 包com.dev.chicagotraintracker;

进口android.os.Bundle;
进口android.app.Activity;


公共类屏幕布局延伸活动{

@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.screenmap);
}}
 

和AndroidManifest.xml中

 < XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
包=com.dev.chicagotraintracker
安卓版code =1
机器人:VERSIONNAME =1.0>

<用途-SDK
    安卓的minSdkVersion =8
    机器人:targetSdkVersion =17/>

<应用
    机器人:allowBackup =真
    机器人:图标=@可绘制/ ic_launcher
    机器人:标签=@字符串/ APP_NAME
    机器人:主题=@风格/ AppTheme>
    <活动
        机器人:名称=com.dev.chicagotraintracker.MainActivity
        机器人:标签=@字符串/ APP_NAME>
        <意向滤光器>
            <作用机器人:名称=android.intent.action.MAIN/>

            <类机器人:名称=android.intent.category.LAUNCHER/>
        &所述; /意图滤光器>
    < /活性GT;
    <活动机器人:名称=屏幕布局机器人:标签=屏幕布局>< /活性GT;
< /用途>

< /舱单>
 

解决方案

例外似乎是明确的:

  

java.lang.IllegalStateException:找不到方法的sendMessage(查看)在活动课com.dev.chicagotraintracker.MainActivity`

这个错误是因为你所提到的安卓的onClick =的sendMessage的ImageButton 在<$定义C $ C> activity_main.xml ,但你没有任何的sendMessage()功能在 MainActivity 。这就是为什么你所得到的错误。您需要定义一个函数在 MainActivity ,告诉它的的ImageButton 被点击时会发生什么。因此,code应按钮点击执行,该函数内部。

例如:如果要启动按钮点击一个新的活动做这样的事情:

 公共无效的sendMessage(视图v){

    意图myIntent =新的意图(MainActivity.this,Screenmap.class);
    startActivityForResult(myIntent,0);

}
 

把这块code以外的的onCreate(),并为不同的功能。

When pressing a button to switch intents, I get the Chicago Train Tracker has stopped unexpectedly and a logcat of:

09-02 19:54:15.745: D/AndroidRuntime(20681): Shutting down VM
09-02 19:54:15.745: W/dalvikvm(20681): threadid=1: thread exiting with uncaught exception (group=0x41ab6700)
09-02 19:54:15.755: E/AndroidRuntime(20681): FATAL EXCEPTION: main
09-02 19:54:15.755: E/AndroidRuntime(20681): java.lang.IllegalStateException: Could not find a method sendMessage(View) in the activity class com.dev.chicagotraintracker.MainActivity for onClick handler on view class android.widget.ImageButton with id 'Button'
09-02 19:54:15.755: E/AndroidRuntime(20681):    at android.view.View$1.onClick(View.java:3620)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at android.view.View.performClick(View.java:4240)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at android.view.View$PerformClick.run(View.java:17721)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at android.os.Handler.handleCallback(Handler.java:730)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at android.os.Looper.loop(Looper.java:137)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at android.app.ActivityThread.main(ActivityThread.java:5103)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at java.lang.reflect.Method.invokeNative(Native Method)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at java.lang.reflect.Method.invoke(Method.java:525)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at dalvik.system.NativeStart.main(Native Method)
09-02 19:54:15.755: E/AndroidRuntime(20681): Caused by: java.lang.NoSuchMethodException: sendMessage [class android.view.View]
09-02 19:54:15.755: E/AndroidRuntime(20681):    at java.lang.Class.getConstructorOrMethod(Class.java:423)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at java.lang.Class.getMethod(Class.java:787)
09-02 19:54:15.755: E/AndroidRuntime(20681):    at android.view.View$1.onClick(View.java:3613)
09-02 19:54:15.755: E/AndroidRuntime(20681):    ... 11 more
09-02 19:54:16.875: I/Process(20681): Sending signal. PID: 20681 SIG: 9

My code is:

MainActivity.java

package com.dev.chicagotraintracker;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);}


    public void login_Click(View v) {;
Intent myIntent = new Intent(MainActivity.this, Screenmap.class);
startActivityForResult(myIntent, 0);


    }

    public void onClick(View v) {
        // TODO Auto-generated method stub

    }

;

}

Screenmap.java

package com.dev.chicagotraintracker;

import android.os.Bundle;
import android.app.Activity;


public class Screenmap extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.screenmap);
}}

and AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dev.chicagotraintracker"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.dev.chicagotraintracker.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="Screenmap" android:label="Screenmap"></activity>
</application>

</manifest>

解决方案

The Exception seems to be clear:

java.lang.IllegalStateException: Could not find a method sendMessage(View) in the activity class com.dev.chicagotraintracker.MainActivity `

The error is because you have mentioned android:onClick="sendMessage" in the ImageButton defined in activity_main.xml, but you don't have any sendMessage() function in your MainActivity. That is why you are getting the error . You need to define that function in the MainActivity which tell it what should happen when the ImageButton is clicked. So the code which should execute on button click, inside that function.

Eg: If you want to start a new activity on Button click do something like:

public void sendMessage(View v){ 

    Intent myIntent = new Intent(MainActivity.this, Screenmap.class);   
    startActivityForResult(myIntent, 0); 

}

Put this piece of code outside the onCreate() and as a different function.

这篇关于当pressing按钮切换视图错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆