2016-06-18 58 views
0

我会见btn.setText()的问题,但它可以setOnClickListener() 的logcat的告诉我:setText()与com.gc.materialdesign.views.ButtonRectangle,我该如何解决它?

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.gc.materialdesign.views.Button.setText(Button.java:185)

我尝试修复,但失败了, 这是的.java代码:

package com.example.rain.fishingcard; 

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

public class MainActivity extends AppCompatActivity { 

com.gc.materialdesign.views.ButtonRectangle startbtn; 

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

    startbtn = (com.gc.materialdesign.views.ButtonRectangle) findViewById(R.id.startbtn); 

    startbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Intent intent = new Intent(MainActivity.this, GameActivity.class); 
      //startActivity(intent); 
      startbtn.setText("I like"); 
     } 
    }); 
} 
} 

和它是.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" 
xmlns:materialdesign="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context="com.example.rain.fishingcard.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Fishing Card!" 
    android:layout_marginTop="59dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:id="@+id/startText" /> 

<com.gc.materialdesign.views.ButtonRectangle 
    android:id="@+id/startbtn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#1E88E5" 
    android:text="start" 
    android:layout_marginTop="48dp" 
    android:layout_below="@+id/startText" 
    android:layout_alignLeft="@+id/startText" 
    android:layout_alignStart="@+id/startText" /> 

<com.gc.materialdesign.views.ButtonRectangle 
    android:id="@+id/settingbtn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#1E88E5" 
    android:text="setting" 
    android:visibility="gone" 
    android:layout_below="@+id/startbtn" 
    android:layout_alignLeft="@+id/startbtn" 
    android:layout_alignStart="@+id/startbtn" /> 
</RelativeLayout> 

这是logcat的:

06-19 00:26:23.627 2130-2130/com.example.rain.fishingcard E/AndroidRuntime: FATAL EXCEPTION: 
    main Process: com.example.rain.fishingcard, PID: 2130 
    Theme: themes:{} 
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.gc.materialdesign.views.Button.setText(Button.java:185) 
    at com.example.rain.fishingcard.MainActivity$1.onClick(MainActivity.java:24) 
    at com.gc.materialdesign.views.Button.makeCircle(Button.java:135) 
    at com.gc.materialdesign.views.ButtonRectangle.onDraw(ButtonRectangle.java:145) 
    at android.view.View.draw(View.java:16187) 
    at android.view.View.updateDisplayListIfDirty(View.java:15184) 
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593) 
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573) 
    at android.view.View.updateDisplayListIfDirty(View.java:15144) 
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593) 
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573) 
    at android.view.View.updateDisplayListIfDirty(View.java:15144) 
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593) 
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573) 
    at android.view.View.updateDisplayListIfDirty(View.java:15144) 
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593) 
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573) 
    at android.view.View.updateDisplayListIfDirty(View.java:15144) 
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593) 
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573) 
    at android.view.View.updateDisplayListIfDirty(View.java:15144) 
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593) 
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573) 
    at android.view.View.updateDisplayListIfDirty(View.java:15144) 
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:282) 
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:288) 
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:323) 
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:2623) 
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2442) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2075) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
    at android.view.Choreographer.doFrame(Choreographer.java:606) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5461) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 06-19 00:31:23.342 2130-2130/com.example.rain.fishingcard I/Process: Sending signal. PID: 2130 SIG: 9 

回答

0

请从改变你的代码:

startbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Intent intent = new Intent(MainActivity.this, GameActivity.class); 
      //startActivity(intent); 
      startbtn.setText("I like"); 
     } 
    }); 

的代码:

startbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Intent intent = new Intent(MainActivity.this, GameActivity.class); 
      //startActivity(intent); 
      TextView textButton = new TextView(getContext()); 
      textButton.setText("I like"); 
      startbtn.setText(textButton); 
     } 
    }); 

这将解决您的问题。

+0

我尝试你的建议,但它仍然失败, 错误:(27,52)错误:找不到符号 符号:方法的getContext() 错误:(29,34)错误:不兼容的类型:TextView的无法转换为字符串 – user6483428

+0

而且我也使用 TextView textButton =(TextView)findViewById(R.id.startText); 更换TEXT按钮在你的代码,但它仍然无法 错误:(29,34)错误:不兼容的类型:TextView中无法转换为字符串 似乎有一种错误的变量类型的小说 – user6483428

0

只是尝试下载库,并导入它作为您的应用程序模块,然后尝试用此两类ButtonRectangleButtonFlat,那么你是好去更换两个类ButtonRectangle.java和ButtonFlat.java。

相关问题