前提・実現したいこと
Javaで電卓アプリを作成しています。
IDEはAndrid Studioです・
MyCalc.javaに、電卓の演算機能付きボタンを配置するコードを入力し、実機で確認しようと「run app」ボタンを押したところ、以下のようなエラーメッセージが表示されました。
発生している問題・エラーメッセージ
エラー: メソッド onCreate(Bundle)はすでにクラス MyCalcで定義されています エラー: シンボルを見つけられません シンボル: 変数 fab 場所: クラス id
該当のソースコード
package com.example.myandonlinedentaku; import android.os.Bundle; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MyCalc extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_calc); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } int recentOperator = R.id.button_equal; // 最近押された計算キー double result; // 計算結果 boolean isOperatorKeyPushed; // 計算キーが押されたことを記憶 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_calc); // ボタン 0に関するイベントリスナとハンドラ Button btn_0 = (Button) findViewById(R.id.button_0); btn_0.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { // 以下に 0ボタンのイベントハンドラを記述すること } }); // ボタン 1に関するイベントリスナとハンドラ Button btn_1 = (Button) findViewById(R.id.button_1); btn_1.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ EditText txt01 = (EditText) findViewById(R.id.txt01); if (isOperatorKeyPushed == true){ txt01.setText("1"); }else { txt01.append("1"); } isOperatorKeyPushed = false; } }); // ボタン 2に関するイベントリスナとハンドラ Button btn_2 = (Button) findViewById(R.id.button_2); btn_2.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // 以下に 2ボタンのイベントハンドラを記述すること } }); // ボタン 3に関するイベントリスナとハンドラ Button btn_3 = (Button) findViewById(R.id.button_3); btn_3.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // 以下に 3ボタンのイベントハンドラを記述すること } }); // ボタン 4に関するイベントリスナとハンドラ Button btn_4 = (Button) findViewById(R.id.button_4); btn_4.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // 以下に 4ボタンのイベントハンドラを記述すること } }); // ボタン 5に関するイベントリスナとハンドラ Button btn_5 = (Button) findViewById(R.id.button_5); btn_5.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // 以下に 5ボタンのイベントハンドラを記述すること } }); // ボタン 6に関するイベントリスナとハンドラ Button btn_6 = (Button) findViewById(R.id.button_6); btn_6.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // 以下に 6ボタンのイベントハンドラを記述すること } }); // ボタン 7に関するイベントリスナとハンドラ Button btn_7 = (Button) findViewById(R.id.button_7); btn_7.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // 以下に 7ボタンのイベントハンドラを記述すること } }); // ボタン 8に関するイベントリスナとハンドラ Button btn_8 = (Button) findViewById(R.id.button_8); btn_8.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // 以下に 8ボタンのイベントハンドラを記述すること } }); // ボタン 9に関するイベントリスナとハンドラ Button btn_9 = (Button) findViewById(R.id.button_9); btn_9.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ // 以下に 9ボタンのイベントハンドラを記述すること } }); // ボタン∗に関するイベントリスナとハンドラ Button btn_multiply = (Button) findViewById(R.id.button_multiply); btn_multiply.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { // 以下に∗ボタンのイベントハンドラを記述すること } }); // ボタン/に関するイベントリスナとハンドラ Button btn_divide = (Button) findViewById(R.id.button_divide); btn_divide.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { // 以下に/ボタンのイベントハンドラを記述すること } }); // ボタン+に関するイベントリスナとハンドラ Button btn_add = (Button) findViewById(R.id.button_add); btn_add.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { // +ボタンのイベントハンドラ EditText txt01 = (EditText) findViewById(R.id.txt01); TextView txtview01 = (TextView) findViewById(R.id.txtview01); double value = Double.parseDouble(txt01.getText().toString()); if (recentOperator == R.id.button_equal) { result = value; } else{ result = calc(recentOperator, result, value); txt01.setText(String.valueOf(result)); } recentOperator = R.id.button_add; txtview01.setText("+"); isOperatorKeyPushed = true; } }); // ボタン−に関するイベントリスナとハンドラ Button btn_subtract = (Button) findViewById(R.id.button_subtract); btn_subtract.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { // 以下に−ボタンのイベントハンドラを記述すること } }); // ボタン=に関するイベントリスナとハンドラ Button btn_equal = (Button) findViewById(R.id.button_equal); btn_equal.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { // 以下に=ボタンのイベントハンドラを記述すること } }); // ボタン clear に関するイベントリスナとハンドラ Button btn_clear = (Button) findViewById(R.id.button_clear); btn_clear.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { // 以下にclear ボタンのイベントハンドラを記述すること } }); } // 演算に関するメソッド double calc(int operator, double value1, double value2) { switch (operator) { case R.id.button_add: return value1 + value2; case R.id.button_subtract: return value1 - value2; case R.id.button_multiply: return value1 * value2; case R.id.button_divide: return value1 / value2; default: return value1; } } }
試したこと
onCreate(Bundle)が重複しているらしいので、片方削除したり、被っている構文を一つにまとめてみましたが、今度はimport文が適用されなくなってしまいました。
補足情報(FW/ツールのバージョンなど)
- Android Gradle Plugin Version
3.4.1
- Gradle Version
5.1.1
あなたの回答
tips
プレビュー