2017-12-31 155 views
-2

나는 안드로이드를 배우고 있습니다. 앱을 실행할 때마다 충돌이 발생합니다. 오류가없는 것 같습니다. 도움이 필요하다.응용 프로그램이 충돌합니다

다음은 주요 코드입니다.

MainActivity.java

package com.example.arnab.myfirstapplication; 

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

public class MainActivity extends Activity implements View.OnClickListener { 

    Button btnAdd = (Button)findViewById(R.id.btnAdd); 
    EditText num1 = (EditText)findViewById(R.id.num1); 
    EditText num2 = (EditText)findViewById(R.id.num2); 
    TextView result = (TextView)findViewById(R.id.result); 

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

     btnAdd.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     if(v == btnAdd){ 
      int n1 = Integer.parseInt(num1.getText().toString()); 
      int n2 = Integer.parseInt(num2.getText().toString()); 
      int sum = n1 + n2; 
      result.setText(Integer.toString(sum)); 
     } 
    } 

    @Override 
    public void onPointerCaptureChanged(boolean hasCapture) { 

    } 
} 

도와주세요 아주 많이 감사합니다. 나는이 단계에서 붙어있다. 내가 뭘 할지라도 앱이 다운됩니다.

업데이트 가 나는 된 setContentView 전에 findViewById를을 사용할 수 없습니다 것을 알고하지 않았다. 그 당시 나의 논리는 분명하지 않았다. 이렇게되어 미안합니다.

+5

당신은'findViewById'을 사용할 수 없습니다보십시오. 따라서 서브 뷰 초기화를'onCreate' 메소드로 옮기십시오. – Henry

+0

감사합니다. @Henry. 문제 해결됨. 내 실수를 이해했다. – Arnab

+0

Thanks @BilltheLizard. 문제 해결 – Arnab

답변

1

findViewById 또는 방법 블록 외부의 다른 방법으로 전화를 걸 수 없습니다.

btnAdd = (Button)findViewById(R.id.btnAdd); 
num1 = (EditText)findViewById(R.id.num1); 
num2 = (EditText)findViewById(R.id.num2); 
result = (TextView)findViewById(R.id.result); 

onCreatesetContentView 후 다음 코드를 추가하고 상단에서 모든 초기화를 제거합니다.

+0

도움을 주셔서 감사합니다. – Arnab

1

는 컨텐츠보기를 설정하기 전에이

package com.example.arnab.myfirstapplication; 

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

public class MainActivity extends Activity implements View.OnClickListener 
{ 



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

Button btnAdd = (Button)findViewById(R.id.btnAdd); 
EditText num1 = (EditText)findViewById(R.id.num1); 
EditText num2 = (EditText)findViewById(R.id.num2); 
TextView result = (TextView)findViewById(R.id.result); 

    btnAdd.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    if(v == btnAdd){ 
     int n1 = Integer.parseInt(num1.getText().toString()); 
     int n2 = Integer.parseInt(num2.getText().toString()); 
     int sum = n1 + n2; 
     result.setText(Integer.toString(sum)); 
    } 
} 

@Override 
public void onPointerCaptureChanged(boolean hasCapture) { 

} 
} 
+0

답변 해 주셔서 감사합니다. @ 시드 함자 하산 – Arnab