2017-09-08 7 views
0

私は、Androidで初心者だが保持されます。電卓アプリで作業を始めたばかりで、アプリがいつもクラッシュする理由はわかりません。シンプルな電卓アプリがクラッシュし

私は2つのアクティビティ... MainActivityとCalculatorActivityを持って

MainActivity:

public class MainActivity extends AppCompatActivity 
     {    
      Button calcubtn;    
      @Override 
      protected void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 

       calcubtn = (Button) findViewById(R.id.calculatorbtn); 
       calcubtn.setOnClickListener(new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View view) 
        { 
         Intent calculator = new Intent(MainActivity.this, CalculatorActivity.class); 
         startActivity(calculator); 
        } 
       }); 
      } 
     } 

MainActivityレイアウト:

<?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:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="com.example.rfkha.myfirstapp.MainActivity"> 


     <TextView 
      android:id="@+id/textView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="13dp" 
      android:textSize="27sp" 
      android:textColor="@android:color/holo_red_light" 
      android:text="@string/functions_text" /> 

     <Button 
      android:id="@+id/calculatorbtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentStart="true" 
      android:layout_below="@+id/textView" 
      android:layout_marginStart="43dp" 
      android:layout_marginTop="70dp" 
      android:text="@string/calcu_string" 

      /> 

    </RelativeLayout> 

CalculatorActivity:(つまり、子アクティビティ)

ここアクティビティクラスで、私はimplements View.OnclickListenerを追加しました。私はどこかでstackoverflowでそれを見つけた。私はこの問題が問題だと思う。また、それはアクティビティクラスでそれを使用するためにキーワードabstractを使用する必要があったので、私もそれを使用しました。

public abstract class CalculatorActivity extends AppCompatActivity implements View.OnClickListener { 

     Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, zerobtn, dotbtn, equalbtn, minusbtn, sumbtn, divbtn, mulbtn; 
     double num1, num2; 
     boolean sum, minus, div, mul; 
     EditText textarea= (EditText) findViewById(R.id.textarea); 

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

      btn1 = (Button) findViewById(R.id.btn1); 
      btn1.setOnClickListener(this); 
      (((Same Code for buttons upto 9 and SUM, MINUS, DIVISION and MULtiplication Buttons))) 

      } 

     @Override 
     public void onClick(View v) 
     { 
      switch (v.getId()) 
      { 
       case R.id.btn1: { 
        textarea.setText(textarea.getText()+"1"); 
        break; 
       } 
       case R.id.btn2: { 
        textarea.setText(textarea.getText()+"2"); 
        break; 
       } 
       case R.id.btn3: 

       ((((( And So on... Upto Button 9 )))))) 


       case R.id.zerobtn: { 
        textarea.setText(textarea.getText()+"0"); 
        break; 
       } 
       case R.id.dotbtn: { 
        textarea.setText(textarea.getText()+"."); 
        break; 
       } 
       case R.id.sumbtn: { 
        num1=Double.parseDouble(textarea.getText().toString()); 
        sum=true; 
        textarea.setText(null); 
        break; 
       } 
        (((((Likewise for Minus, Division and Multiplication buttons)))))))))) 

       case R.id.equalbtn: 
        { 
         if (num1!=0) 
         { 
          num2=Double.parseDouble(textarea.getText().toString()); 
          if (sum) { 
           textarea.setText(num1+num2+""); 
           sum=false; 
          } 
          else if(mul) { 
           textarea.setText(num1*num2+""); 
           mul=false; 
          } 
          else if(div) { 
           textarea.setText(num1/num2+""); 
           div=false; 
          } 
          else if(minus) { 
           textarea.setText(num1-num2+""); 
           minus=false; 
          } 

         } 
         else{ 
          Toast.makeText(getApplicationContext(), "First select a number!!", Toast.LENGTH_SHORT); 
         } 
        break; 
        }   
      } 
     } 
    } 

計算アクティビティレイアウト:

<LinearLayout 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:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:weightSum="1" 
     tools:context="com.example.rfkha.myfirstapp.CalculatorActivity"> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="13dp" 
      android:layout_marginTop="8dp" 
      android:gravity="center_horizontal" 
      android:text="@string/calculatortxt" 
      android:textSize="25sp" /> 

     <EditText 
      android:id="@+id/textarea" 
      android:layout_width="351dp" 
      android:layout_height="154dp" 
      android:layout_marginStart="16dp" 
      android:ems="10" 
      android:hint="@string/resultsString" 
      android:textSize="33sp" 
      android:textAlignment="textEnd" 
      android:padding="11dp" 
      android:inputType="textPersonName" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal" 
      android:weightSum="1"> 

      <Button 
       android:id="@+id/clearbt" 
       android:layout_width="293dp" 
       android:layout_height="51dp" 
       android:text="@string/cetxt" 
       android:textSize="24sp" /> 

     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/btn7" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="7" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn8" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="8" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn9" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="9" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/mulbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:layout_marginStart="27dp" 
       android:text="x" 
       android:textSize="18sp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/btn4" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="4" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn5" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="5" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn6" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="6" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/minusbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:layout_marginStart="27dp" 
       android:text="-" 
       android:textSize="24sp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/btn1" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="1" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn2" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="2" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn3" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="3" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/sumbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:layout_marginStart="27dp" 
       android:text="+" 
       android:textSize="24sp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/dotbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="." 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/zerobtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="0" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/equalbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="=" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/divbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:layout_marginStart="27dp" 
       android:text="/" 
       android:textSize="24sp" /> 
     </LinearLayout> 


    </LinearLayout> 

Logcat:Logcatに(エラー)

リンク:https://pastebin.com/hbwZVUZg

+0

それがクラッシュしたとき、あなたはまさにエラーが出るのですか?私たちにこのようなコードをたくさん与えているのであれば、どこにエラーがあるのか​​を突き止めるようなものも与えてください。 – hnefatl

+0

LogCatのエラーは何ですか?マニフェストにあなたの活動をセットアップしましたか? [ここをクリック] [1] [1]:https://stackoverflow.com/questions/20870202/how-to-add-activity-to-manifest-xml-in-right-way – Xaren

+0

@hnefatl "CalculatorActivity"ここで私はエラーを述べました。ちなみにエラーは、Androidスタジオで示されていないが、それでもアプリはそれは私がLogCatをチェックしていなかったLogCat –

答えて

1

は、抽象的なキーワードを削除します。行textarea= (EditText) findViewById(R.id.textarea);EditText textarea;に変更され、最後にこれをonCreate()に設定します。textarea = (EditText)findViewById(R.id.textarea);

抽象クラスをインスタンス化することはできません。 here

そして、あなたは、同じバージョンの依存関係を使用してされているかどうかhere

public class CalculatorActivity extends AppCompatActivity implements View.OnClickListener { 

Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, zerobtn, dotbtn, equalbtn, minusbtn, sumbtn, divbtn, mulbtn; 
double num1, num2; 
boolean sum, minus, div, mul; 
EditText textarea; 

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

    textarea = (EditText) findViewById(R.id.textarea); 
0

onCreateにこのコードを入れ:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    ... 
    textarea = (EditText)findViewById(R.id.textarea); 
    ... 
} 
+1

解かれる - IDによる制御を得ることが有効な操作がされるまではないことをおそらくアクティビティが作成されました。 – hnefatl

0

チェックをデバッグする方法を確認してください。依存関係の間にバージョンの競合があってはなりません。

+0

問題は解決しました..それは '抽象的な'のためでした...第2コメントの@Xarenのおかげです。 –

関連する問題