2016-12-27 3 views
2

私はAndroidスタジオの新機能です。私が何か助けてもらえれば、本当に奇妙なエラーが発生しています。Android Studio - ボタンクリッククラッシュ(シンプル)

私は非常に基本的なコードを持っています。ボタンをクリックすると、ボタンのテキストが「ボタン」から「クリック」に変わります。しかし、私がボタンを押すたびに、アプリケーションがクラッシュし、エミュレータで「Appname has stopped」と表示されます。非常に奇妙である何

は私のactivity_main.xmlのデザインビューで、onClickのドロップダウンは、下のいずれかが選択されている場合にのみ動作するコードowever同じ名前(https://puu.sh/t2h5I/42ad4379d6.png

Hの二つの機能を示すことです。そして私がアプリを走らせるたびに、下のものを選択解除し、上を再選択して、作業を止めるだけです。

package com.example.john.ameladay; 


import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 

    public Button melButtonCode; 

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

    public void buttonPress(View v){ 
     melButtonCode = (Button) v; 
     ((Button) v).setText("Has been clicked!"); 

    } 
} 

ここで任意の助けをいただければ幸い私のactivity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.john.ameladay.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/mainText" 
    android:id="@+id/textView" /> 

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/mela" 
    android:id="@+id/melPhoto" /> 

<Button 
    android:text="Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_toRightOf="@+id/textView" 
    android:layout_toEndOf="@+id/textView" 
    android:layout_marginLeft="32dp" 
    android:layout_marginStart="32dp" 
    android:layout_marginBottom="43dp" 
    android:id="@+id/button" 
    android:onClick="buttonPress (MainActivity)" /> 

です!!:

は、ここに私のMainActivityです

+0

共有してくださいクラッシュレポート –

+0

ここでbuttonPress関数を呼び出していますか? –

+0

onclickの代わりにonclicklistnerを使用し、トーストやその他のボタンをクリックします。 –

答えて

1

単にこの

android:onClick="buttonPress (MainActivity)" 

を削除し、私によれば、これは、上のクリックを設定するためのより良い方法である。この

android:onClick="buttonPress" 
0

を貼り付けボタンで

をこのタグを置き換えますボタン

01あなたの問題のために
public class MainActivity extends AppCompatActivity { 

    public Button melButtonCode; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     melButtonCode = (Button).findViewById(R.id.button);//find button by Id 
     melButtonCode.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       melButtonCode.setText("Has been clicked!"); 
      } 
     }); 
    } 
} 

は、ボタンへの参照を取得し、それは

android:onClick="buttonPress (MainActivity)" 

android:onClick="buttonPress" 
1

良い方法はそれが行うと交換しますy私たちのJavaコードfindViewById()メソッドを使用してボタンにOnClickListenerを設定します。あなたの現在の問題のために

、代わりに

android:onClick="buttonPress (MainActivity)" 
2

シンプルで

android:onClick="buttonPress" 

を使用しています。あなたが書く必要があります:あなたはbuttonPress (MainActivity)を書いた場合

android:onClick="buttonPress" 

が起こっなぜ、AndroidはbuttonPress (MainActivity)方法(ないMainActivity.buttonPress())を見つけようとしますが、MainActivityはbuttonPress (MainActivity)メソッドを持っていません。だからエラーが起こった。

0

メソッドをpublic-protectedに設定すると、インスタント実行モードになっているときに機能しますが、そうでないときには機能しません。理由は分かりません!

+0

を参照してください_メソッドは公開する必要がありますか? – Landschaft

+0

公開する方法を記述するコードを追加することを検討してください。 –

関連する問題