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) { 

    } 
} 

助けてくださいが非常に高く評価されます。私はこの段階で立ち往生しています。私が何をするにしても、アプリはクラッシュします。

更新 私はsetcontentviewfindViewByIdを使用することはできないことを知りませんでした。その時、私の論理は明らかではありませんでした。これにつきましては申し訳ございません。

+5

を試してみてください。したがって、サブビューの初期化を 'onCreate'メソッドに移してください。 – Henry

+0

ありがとう@Henry。問題が解決しました。私の間違いを理解した。 – Arnab

+0

ありがとう@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

を使用すると、コンテンツビューを設定している前に、あなたは `findViewById`を使用することはできません。この

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

答えをありがとう。 @Syed Hamzaハッサン – Arnab

関連する問題