java.lang.IllegalStateExeception:无法找到活动类的方法 [英] java.lang.IllegalStateExeception: could not find method in activity class

查看:4644
本文介绍了java.lang.IllegalStateExeception:无法找到活动类的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道为什么,但我得到这个异​​常:

  java.lang.IllegalStateException:找不到在活动课android.view.ContextThemeWrapper为的onClick处理方法onButtonClick(视图)在视图类android.widget.Button ID为 button19

在我的应用程序,我不知道如何解决它。出于某种原因,它只是引发此异常在平板电脑布局。有什么建议?

这里是layout.xml

 < RelativeLayout的
    机器人:layout_height =FILL_PARENT
    机器人:layout_width =FILL_PARENT
    的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:定制=htt​​p://schemas.android.com/apk/res-auto
    机器人:ID =@ + ID / RL
    机器人:主题=@风格/ Base.Theme.AppCompat.Light>    < com.example.czhou.myapplication2.SudokuBoardView
        机器人:ID =@ + ID /板
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        定制:mCellSize =40dp
        定制:mOrientationLandscape =真
        机器人:layout_alignParentTop =真
        机器人:layout_alignParentLeft =真
        机器人:layout_alignParentStart =真/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=1
        机器人:ID =@ + ID / button10
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_alignParentTop =真
        机器人:layout_toRightOf =@ + ID /板
        机器人:layout_toEndOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=2
        机器人:ID =@ + ID / button11
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID / button10
        机器人:layout_toRightOf =@ + ID /板
        机器人:layout_toEndOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=3
        机器人:ID =@ + ID / button12
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID / button11
        机器人:layout_toRightOf =@ + ID /板
        机器人:layout_toEndOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=4
        机器人:ID =@ + ID / button13
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID / button12
        机器人:layout_toRightOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=5
        机器人:ID =@ + ID / button14
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID / button13
        机器人:layout_toRightOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=6
        机器人:ID =@ + ID / button15
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID / button14
        机器人:layout_toRightOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=7
        机器人:ID =@ + ID / button16
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID / button15
        机器人:layout_toRightOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=8
        机器人:ID =@ + ID / button17
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID / button16
        机器人:layout_toRightOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:文字=9
        机器人:ID =@ + ID / button18
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID / button17
        机器人:layout_toRightOf =@ + ID /板
        机器人:layout_toEndOf =@ + ID /板/>    <按钮
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:paddingLeft =4DP
        机器人:paddingRight =4DP
        机器人:文本=保存&放大器;放大器;退出
        机器人:ID =@ + ID / button19
        机器人:背景=@绘制/ button_background
        安卓的onClick =onButtonClick
        机器人:layout_below =@ + ID /橡皮擦
        机器人:layout_toRightOf =@ + ID / button10
        机器人:layout_toEndOf =@ + ID / button10/>    <的ImageButton
        机器人:layout_width =70dp
        机器人:layout_height =70dp
        机器人:ID =@ + ID /橡皮擦
        机器人:SRC =@绘制/ ic_action_eraser
        机器人:背景=@绘制/ button_background
        机器人:可点击=真
        安卓的onClick =onImageButtonClick
        机器人:layout_alignParentTop =真
        机器人:layout_alignLeft =@ + ID / button19
        机器人:layout_alignStart =@ + ID / button19/>
< / RelativeLayout的>

下面是活动类

 包com.example.czhou.myapplication2;进口android.app.FragmentManager;
进口android.content.Context;
进口android.content.res.Configuration;
进口android.graphics.drawable.Drawable;
进口android.graphics.drawable.GradientDrawable;
进口android.os.Bundle;
进口android.support.v7.app.ActionBar;
进口android.support.v7.app.ActionBarActivity;
进口android.util.DisplayMetrics;
进口android.util.Log;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.View;
进口android.view.ViewGroup;
进口android.view.Window;
进口android.view.WindowManager;
进口android.widget.Button;
进口android.widget.ImageButton;
进口android.widget.RelativeLayout;进口java.io.FileOutputStream中;
进口java.text.DateFormat中;
进口java.text.SimpleDateFormat的;
进口的java.util.Calendar;
公共类SudokuGameActivity扩展ActionBarActivity {    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_game);
        动作条动作条= getSupportActionBar();
        actionBar.hide();
        SudokuBoardView sudokuBoardView =(SudokuBoardView)findViewById(R.id.board);
        sudokuBoardView.setmFileName(this.getIntent()getStringExtra(文件));    }
    公共无效onButtonClick(视图v){
        Log.i(按钮,按钮点击!);        按钮B =(按钮)findViewById(v.getId());
        Log.i(按钮,b.getText()的toString());            Log.i(按钮,在环!);
            SudokuBoardView sudokuBoardView =(SudokuBoardView)findViewById(R.id.board);
        如果(b.getText()等于(储存并退出。)){
            保存游戏();
            完();
        }其他{
            sudokuBoardView.setCellValue(的Integer.parseInt(b.getText()的toString()));
        }
    }
    公共无效onImageButtonClick(视图v){
        的ImageButton IB =(的ImageButton)findViewById(v.getId());
        如果(ib.getId()== R.id.eraser){
            SudokuBoardView sudokuBoardView =(SudokuBoardView)findViewById(R.id.board);
            sudokuBoardView.setCellValue(0);        }其他{        }
    }    公共无效秘技(){
        FileOutputStream中的OutputStream;        字符串FN = getIntent()getStringExtra(文件)。
        StringBuilder的SB =新的StringBuilder();
        的for(int i = 0; I< 9;我++){
            对于(INT J = 0; J< 9; J ++){
                如果(SudokuBoardView.cells [I] [J] .isEditable){
                    sb.append(,);
                }其他{
                    sb.append(。);
                }
                如果(SudokuBoardView.cells [I] [J] .isWrong){
                    sb.append(!);
                }其他{
                    sb.append(。);
                }                sb.append(SudokuBoardView.cells [I] [J] .getValue());
            }
        }        尝试{            的OutputStream = openFileOutput(FN,Context.MODE_PRIVATE);
            outputStream.write(sb.toString()的getBytes());
            outputStream.close();
            的System.out.println(保存...);
        }赶上(例外五){
            e.printStackTrace();
        }
    }
}


解决方案

我有一个非常类似的问题,它发生仅适用于Android L当它工作在旧version.Looks就像在5.0中的错误或无证功能罚款。

解决方案为我工作:

 删除机器人:主题=@风格/ Base.Theme.AppCompat.Light

从layout.xml。在定义这样的Andr​​oidManifest.xml中的应用程序元素应用程序的主题:

 <应用
         ...
         机器人:主题=@安卓风格/ Theme.Holo.Light
         ...>

I'm not sure why but I'm getting this exception:

java.lang.IllegalStateException: Could not find a method onButtonClick(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'button19'

in my app and I don't know how to fix it. For some reason it only throws this exception in the tablet layout. Any suggestions?

Here is the layout.xml

<RelativeLayout
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:id="@+id/rl"
    android:theme="@style/Base.Theme.AppCompat.Light">

    <com.example.czhou.myapplication2.SudokuBoardView
        android:id="@+id/board"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        custom:mCellSize="40dp"
        custom:mOrientationLandscape="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="1"
        android:id="@+id/button10"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/board"
        android:layout_toEndOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="2"
        android:id="@+id/button11"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/button10"
        android:layout_toRightOf="@+id/board"
        android:layout_toEndOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="3"
        android:id="@+id/button12"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/button11"
        android:layout_toRightOf="@+id/board"
        android:layout_toEndOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="4"
        android:id="@+id/button13"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/button12"
        android:layout_toRightOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="5"
        android:id="@+id/button14"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/button13"
        android:layout_toRightOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="6"
        android:id="@+id/button15"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/button14"
        android:layout_toRightOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="7"
        android:id="@+id/button16"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/button15"
        android:layout_toRightOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="8"
        android:id="@+id/button17"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/button16"
        android:layout_toRightOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:text="9"
        android:id="@+id/button18"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/button17"
        android:layout_toRightOf="@+id/board"
        android:layout_toEndOf="@+id/board" />

    <Button
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:paddingLeft="4dp"
        android:paddingRight="4dp"
        android:text="Save &amp; Quit"
        android:id="@+id/button19"
        android:background="@drawable/button_background"
        android:onClick="onButtonClick"
        android:layout_below="@+id/eraser"
        android:layout_toRightOf="@+id/button10"
        android:layout_toEndOf="@+id/button10" />

    <ImageButton
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:id="@+id/eraser"
        android:src="@drawable/ic_action_eraser"
        android:background="@drawable/button_background"
        android:clickable="true"
        android:onClick="onImageButtonClick"
        android:layout_alignParentTop="true"
        android:layout_alignLeft="@+id/button19"
        android:layout_alignStart="@+id/button19" />
</RelativeLayout>

Here is the activity class

package com.example.czhou.myapplication2;

import android.app.FragmentManager;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.RelativeLayout;

import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;


public class SudokuGameActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
        SudokuBoardView sudokuBoardView = (SudokuBoardView) findViewById(R.id.board);
        sudokuBoardView.setmFileName(this.getIntent().getStringExtra("FILE"));

    }




    public void onButtonClick(View v) {
        Log.i("Button", "Button clicked!");

        Button b = (Button) findViewById(v.getId());
        Log.i("Button", b.getText().toString());

            Log.i("Button", "in the loop!");
            SudokuBoardView sudokuBoardView = (SudokuBoardView) findViewById(R.id.board);
        if(b.getText().equals("Save & Quit")) {
            saveGame();
            finish();
        }else {
            sudokuBoardView.setCellValue(Integer.parseInt(b.getText().toString()));
        }
    }
    public void onImageButtonClick(View v){
        ImageButton ib = (ImageButton) findViewById(v.getId());
        if (ib.getId() == R.id.eraser){
            SudokuBoardView sudokuBoardView = (SudokuBoardView) findViewById(R.id.board);
            sudokuBoardView.setCellValue(0);

        } else {

        }
    }

    public void saveGame(){
        FileOutputStream outputStream;

        String fn = getIntent().getStringExtra("FILE");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                if (SudokuBoardView.cells[i][j].isEditable){
                    sb.append(",");
                } else {
                    sb.append(".");
                }
                if (SudokuBoardView.cells[i][j].isWrong){
                    sb.append("!");
                } else {
                    sb.append(".");
                }

                sb.append(SudokuBoardView.cells[i][j].getValue());
            }
        }

        try {

            outputStream = openFileOutput(fn, Context.MODE_PRIVATE);
            outputStream.write(sb.toString().getBytes());
            outputStream.close();
            System.out.println("Saving... ");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}

解决方案

I had a very similar problem, it happens only on Android L while it works fine on the older version.Looks like a bug or undocumented feature in 5.0.

Solution that worked for me:

remove android:theme="@style/Base.Theme.AppCompat.Light"

from your layout.xml. Define your application theme in AndroidManifest.xml application element like that:

<application 
         ...
         android:theme="@android:style/Theme.Holo.Light"
         ...  >

这篇关于java.lang.IllegalStateExeception:无法找到活动类的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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