68877


# したいこと

ボタンクリック時に別の画面(activity_sub1)に遷移したい。

# 試したこと

MainActivityの@overrideが二つ発生して被ってるので、一つにまとめるとviewがエラーになる。  
参考書を読んだりしたのですが、@overrideの扱い方が今一つ分からないです。

[code]

    activitymainxml
    //このボタンをクリックするとactivity_sub1に遷移
    <Button
            android:id="@+id/toSub1Button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="516dp"
            android:text="toSub1Button"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"></Button>
    
[/code]

[code]

    MainActivityjava
    
    import android.os.Bundle;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.TextView;
    import androidx.appcompat.app.AppCompatActivity;
    import android.content.Intent;
    import android.widget.Button;
    import android.view.View;
    
    public class MainActivity extends AppCompatActivity {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void onClickButton(android.view.View view) {
        (別のボタンについてのメソッド。中略)
        }
    
     　　@Override　//上の１overrideと被ってるので削除してまとめると別のボタンのviewがエラーになる
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);　
            setContentView(R.layout.activity_sub1);
    
            Button returnButton = findViewById(R.id.returnButton);
    
            returnButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view2) {
                    MainActivity.this.finish();
                }
            });
        }
    }
    
[/code]

[code]

    activitysub1xml
    
     <Button
            android:id="@+id/returnButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginLeft="4dp"
            android:layout_marginTop="680dp"
            android:text="returnButton"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"></Button>
    
[/code]

[code]

    SubActivity1java
    
    public class SubActivity1 extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sub1);
    
            Button returnButton = findViewById(R.id.returnButton);
    
            returnButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view2) {
                    SubActivity1.this.finish();
                }
            });
        }
    }
    
[/code]

[code]

    AndroidManifestxml
    
      <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <activity android:name=".SubActivity1"
                android:label="string/app_name" > 
            </activity> //サブactivity追加
        </application>
    
[/code]

#参考にしたサイト  
<https://qiita.com/QiitaD/items/1495f2f9839fe8706d31>


CC BY-SA 4.0
2020-07-24T02:26:50.207
68873
2020-07-24T04:37:41.683
40944
question
java android android-studio
android studioでボタンクリック時に画面遷移させる方法


こんにちは、はじめまして。

@Overrideアノテーション(注釈)とご入力されたコードで発生しているエラーに関するご質問ですね。

@Overrideはこのメソッドが継承元のクラスから継承され、オーバーライド(上書き)されていることを示します。あくまでこの注釈はコンパイラへの指令として働き、書く必要はありますがコードの実行内容には影響しません。

<https://docs.oracle.com/javase/jp/10/docs/api/java/lang/Override.html>

ここでは、@Overrideが複数あるのが問題ではなく、同じ名前のonCreate(Bundle)
メソッドが複数同一クラス内に存在していることが頂いたソースコードでは問題となっています。それに対する対処法は、片方を消してまとめることですので、対処は正しいかと思います。

コードを拝見した限りですと、MainActivityでエラーが生じているのではないでしょうか。  
こちらで直しを入れたものは以下になります。

[code]

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);　
            //activity_mainのレイアウトをContentViewに設定
            setContentView(R.layout.activity_main);
            //activity_main内のtoSub1Buttonを取得
            Button gosubButton = findViewById(R.id.toSub1Button);
            //ボタンがクリックされた時の処理を追加
            gosubButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view2) {
                   //Intentを利用して他のアクティビティに遷移する
                   Intent intent = new Intent(MainActivity.this, SubActivity1.class);
                   startActivity(intent);
                }
            });
        }
        public void onClickButton(android.view.View view) {
        }
    }
    
[/code]

修正点は以下のとおりです

  * onCreateをひとつにした。
  * R.layout.activity_mainをコンテントビューとして読み込むようにした
  * activity_mainに含まれているボタンを取得するようにした
  * Intentを使用してstartActivityでSubActivity1クラスに遷移するようにした

個別に命令文やエラーの意味を確認して理解を進めてみてください。稼働するサンプルコードなどと比較して見比べるのもいいと思います。


CC BY-SA 4.0
2020-07-24T04:37:41.683
68877
2020-07-24T04:37:41.683
37777
68873
answer