2016-09-28 5 views
0

이 코드를 생성하기 위해이 오류 시도에 :충돌 할 때의 setText 텍스트 뷰

에 의해 발생 : java.lang.NullPointerException이 : 가상 메서드를 호출하는 시도를 '무효 android.widget.TextView.setText (java.lang의 .CharSequence) 'null 개체 참조에 대한.

public class MainActivity extends AppCompatActivity implements View.OnTouchListener{ 
private Tablero fondo; 
int x; 
int y; 
private boolean activo = true; 
int intento = 10; 
String numerointentos; 


    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    LinearLayout linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1); 
    TextView Tiradas = (TextView) findViewById(R.id.Intentos) ; 
    numerointentos = Integer.toString(intento); 
    Tiradas.setText(numerointentos); 

    fondo = new Tablero(this); 
    fondo.setOnTouchListener(this); 
    linearLayout1.addView(fondo); 
    fondo.casillas = new Casilla[8][8]; 
    for (int f = 0; f < 8; f++){ 
     for (int c = 0; c < 8; c++){ 
      fondo.casillas[f][c] = new Casilla(); 
     } 
    } 

그리고 이것은 .XML 코드 :

<?xml version= "1.01" encoding="utf-8"?> 

<LinearLayout 
android:id="@+id/linearLayout1" 
android:layout_width= "fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:weightSum="1"> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/reiniciar" 
    android:id="@+id/btnReiniciar" 
    android:onClick="presionado" 
    android:layout_gravity="center_horizontal" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:id="@+id/Intentos" 
    android:layout_gravity="center_horizontal" /> 

는 분명히 더 많은 코드와 코드와 clases가 있지만 그 고유 내 코드입니다

setText를 포함하고 있습니다.

그리고 또 다른 질문입니다. 다른 공개 공백 또는 메서드에서 TextView의 값을 수정하려면 어떻게해야합니까?

귀하의 도움을 주셔서 감사합니다. 웹에서 anwsers를 검색했지만 해결할 수 없습니다. 나는 그 이유를 모른다. 감사!

답변

0

이동 클래스와 TextView의 선언 '속성

public class MainActivity extends AppCompatActivity implements View.OnTouchListener { 
    public TextView Tiradas; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setContentView(...); 

     Tiradas = (TextView) findViewById(R.id.Intentos); 
     Tiradas.setText(numerointentos); 
    } 
} 

편집 :

당신은에 관해서는 (activity_main.xml 파일의 다른 변형이 없는지 확인 가로 또는 더 큰 화면 크기). 그럴 경우 해당 레이아웃 파일에 누락 된보기를 추가하십시오.

참조 된 레이아웃에서 뷰를 찾을 수없는 경우 을 반환하므로 findViewById(int)이 반환됩니다.

+0

안녕하세요, 저는 @override 앞에있는 것들을 추가 할 것입니다. 왜냐하면 저는 그것과 동일한 public 클래스가 없기 때문입니다. 감사! –

+0

새 코드가 있습니다. 감사합니다! –

+0

동일합니다 :)'Tiradas' 변수가 클래스 '변수 (전역 변수) 인 경우 (onCreate 메소드 내에서 로컬 변수가 아닌 경우 setText를 수행하면 NPE 오류가 발생하지 않습니다. 내부에서'onCreate'. 내 코드 btw를 업데이트했습니다.이 도움이 되었기를 바랍니다. – Wilik

0

왜 텍스트보기를 전역 변수로 만드시겠습니까? 그런 다음 다른 기능에서도 해당 텍스트 필드에 액세스 할 수 있습니다.

이렇게하면됩니다.

public class MainActivity extends AppCompatActivity { TextView Tiradas; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManAger.LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1); Tiradas = (TextView) findViewById(R.id.Intentos) ; numerointentos = Integer.toString(intento); Tiradas.setText(numerointentos); fondo = new Tablero(this); } }

+0

안녕 Snippy, 답변 주셔서 감사합니다,하지만 Java와 Android에서 새로운 기능입니다. 그렇다면 Logcat은 무엇을 의미합니까? 감사합니다. 죄송합니다. –

+0

Log cat은 Android Studio에서 출력을 표시하는 출력 터미널입니다. –

+0

안녕 Snippy,하지만 같은 공용 클래스가 없어, 새로운 코드와 감사에 대해 한번보세요! 내가 공개 수업을 변경할 수 있는지 모르겠습니다. –