Как переопределить метод из расширенной активности? - PullRequest
0 голосов
/ 02 марта 2019

У меня 2 активности.Один - AlertDialogActivity, а второй - MainActivity.Я расширил AlertDialogActivity в MainActivity.

вот так public class MainActivity extends AlertDialogActivity

, как переопределить метод, который в AlertDialogActivity, на мой MainActivity?

AlertDialogActivity:

package com.jimmytrivedi.alertdialog;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class AlertDialogActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_alert_dialog);
        showAlertDialog(AlertDialogActivity.this);
    }

    private void showAlertDialog(final Context context) {
        // 1. Instantiate an <code><a href="/reference/android/app/AlertDialog.Builder.html">AlertDialog.Builder</a></code> with its constructor
        AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);

// 2. Chain together various setter methods to set the dialog characteristics
        builder.setMessage("How are you?")
                .setTitle("Hello");

// 3. Get the <code><a href="/reference/android/app/AlertDialog.html">AlertDialog</a></code> from <code><a href="/reference/android/app/AlertDialog.Builder.html#create()">create()</a></code>
        AlertDialog dialog = builder.create();
        dialog.show();


    }

}

Ответы [ 3 ]

0 голосов
/ 02 марта 2019

Метод должен быть с тем же именем и типом.Метод также должен не быть закрытым .

Может быть защищенным, частным или общедоступным .Подробнее об этом вы можете узнать здесь: В чем разница между общедоступным, защищенным, закрытым для пакета и частным в Java?

0 голосов
/ 02 марта 2019

, если вы хотите переопределить метод Используйте abstract ключевое слово

public abstract class AlertDialogActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alert_dialog);
    showAlertDialog(AlertDialogActivity.this);
}

  public abstract void showAlertDialog(final Context context) {

    // 1. Instantiate an <code><a href="/reference/android/app/AlertDialog.Builder.html">AlertDialog.Builder</a></code> with its constructor
    AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);

  // 2. Chain together various setter methods to set the dialog characteristics
    builder.setMessage("How are you?")
            .setTitle("Hello");

   // 3. Get the <code><a 
  href="/reference/android/app/AlertDialog.html">AlertDialog</a></code> from <code><a 
  href="/reference/android/app/AlertDialog.Builder.html#create()">create()</a></code>
    AlertDialog dialog = builder.create();
    dialog.show();


}
0 голосов
/ 02 марта 2019

Сделайте showAlertDialog protected вместо private или даже общедоступным, если хотите, чтобы другие классы могли вызывать его.

protected void showAlertDialog(final Context context) {

}

Частные методы не могут быть переопределены.

...