2017-05-26 113 views
-1

我想實現onclick當我點擊第一個按鈕去新窗口,但當我點擊它打破程序。我有錯誤:ButtonClick正在打破方案

W/OpenGLRenderer:無法在曲面0x97154160上設置EGL_SWAP_BEHAVIOR,錯誤= EGL_BAD_MATCH。

這是主要:

package FirstApp.myapplication; 

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


public class MainActivity extends AppCompatActivity implements 
View.OnClickListener{ 
TextView text; 
Button button; 
Button button2; 
boolean onClick = true; 

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


    button = (Button) findViewById(R.id.button); 


} 
@Override 

public void onClick(View view) { 


    if(view.getId() == R.id.button){ 

     text.setText("Prvi button je kliknut"); 

    } 

    else if(view.getId() == R.id.button2){ 

     /* Intent i = new Intent(this, DetailActivity.class); 
     i.putExtra("TEXT", input.getText().toString()); 
     startActivity(i);/*/ 

     text.setText("Drugi button je kliknut"); 
    } 
    } 
} 

這是第二類:

package dvino.myapplication; 

import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 


/** 
    * Created by zeroOne on 26.5.2017.. 
*/ 

public class Dvino extends Activity{ 
@Override 
protected void onCreate(Bundle saveInstanceState){ 

    super.onCreate(saveInstanceState); 
    setContentView(R.layout.dvino); 
    } 


} 

EDIT-這是我recive錯誤消息,當程序崩潰:

<'E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: dvino.myapplication, PID: 3044 
        java.lang.IllegalStateException: Could not find method 
    OnClick(View) in a parent or ancestor Context for android:onClick attribute 
     defined on view class android.support.v7.widget.AppCompatButton with id 
    'button' 
         at 


android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 
         at 


    android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
         at android.view.View.performClick(View.java:5610) 
         at android.view.View$PerformClick.run(View.java:22265) 
         at android.os.Handler.handleCallback(Handler.java:751) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6077) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)' 

主xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    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="dvino.myapplication.MainActivity"> 


    <Button 
     android:text="D'vino" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/button" 
     android:layout_marginLeft="18dp" 
     android:layout_alignBottom="@+id/button2" 
     android:layout_alignParentEnd="true" 
     android:layout_marginBottom="49dp" 
     android:onClick="OnClick" 
     /> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:srcCompat="@drawable/dvino" 
     android:id="@+id/imageView" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:text="D'vino Kitchen" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/button2" 
     android:layout_marginLeft="18dp" 
     android:layout_marginBottom="12dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:onClick="onClick" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/title_message" 
     android:id="@+id/text" 
     android:textAppearance="?android:textAppearanceLarge" 
     android:layout_below="@+id/imageView" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="31dp" /> 


</RelativeLayout> 
+1

Java是區分大小寫的。 'android:onClick =「OnClick」'**不匹配**'public void onClick(View view){' –

回答

2

當您嘗試呼叫textview.setText() - 由於尚未初始化textview爲空,您的程序因空指針異常而崩潰。

你做button = (Button)findView...以同樣的方式,你需要做的是爲TextView的也

+0

不,它在我初始化後仍然崩潰 – ZeroOne

+0

好的,現在你有一個單獨的錯誤。您的xml文件中存在一個錯誤。你可以發佈嗎? – Shmuel

+0

我已更新xml文件 – ZeroOne

0

你的代碼有TextView的問題和 此部分: 公共類MainActivity擴展AppCompatActivity實現 View.OnClickListener {} 變化: public class MainActivity extends Activity implements View.OnClickListener {

編輯--- Okey.Try it。

公共類MainActivity擴展活動{

private Button button; 
private TextView text; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    button=(Button) findViewById(R.id.testB); 
    text=(TextView) findViewById(R.id.testT); 


    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      button.setText("ClickedButton"); 
      text.setText("ChangedText"); 
     } 
    }); 


} 

}

+0

當我這樣說 - 無法解析符號活動 – ZeroOne

+0

現在我看到你的XML文件。如果你可以使用上層代碼,刪除這一行android:onClick =「OnClick」 – iOSDEV

0

變化onclick="OnClick"onclick="onClick"爲您的按鈕控件與ID = 「按鈕」

仔細回想使用大寫字母;)

0

在您的onCreate方法初始化後按鈕button=(Button)findViewBy...的n個放button.onClicklistener(this);

0

java.lang.IllegalStateException:找不到方法OnClick(View) 在父或祖先Context爲屬性id爲上視圖類android.support.v7.widget.AppCompatButton定義 'button'

1.在您的佈局XML中,將按鈕屬性的值更改爲onClick

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    .......... 
    ............... 
    tools:context="dvino.myapplication.MainActivity"> 

    <Button   
     android:id="@+id/button" 
     .......... 
     ................. 
     android:onClick="onClick" /> 


    <Button 
     android:id="@+id/button2" 
     .......... 
     ................ 
     android:onClick="onClick" /> 

    ........... 
    ................. 

</RelativeLayout> 

2。在您的MainActivity中,您嘗試將Text設置爲空TextView對象,因爲您沒有從附加的layout中獲取它的reference。它可能會導致NullPointerException。爲了避免這種情況的例外更新您的活動如下onCreate()方法:

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

    button = (Button) findViewById(R.id.button); 
    text = (TextView) findViewById(R.id.text); 
} 

希望這將有助於〜