Два активити используют один метод, как сделать его отдельно?

471
08 января 2017, 16:51

Учусь на курсах програмирования. У меня есть два идентичных активити

package android.and02.lektion2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.content.Intent;
import android.content.ActivityNotFoundException;

public class FirstActivity extends Activity
{
private String ausgabe=" ";
public TextView tvAnzeige;
private  void addText(String text)
{
    ausgabe+=text;
    tvAnzeige.setText(ausgabe);
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button button=(Button)this.findViewById(R.id.second_activity);
    button.setOnClickListener(new ButtonOnClickListener());
    tvAnzeige=(TextView)this.findViewById(R.id.anzeige);
    addText("FirstActivity- \"onCreate\" durchlaufen\n");
}
@Override
protected void onStart()
{
    super.onStart();
    addText("FirstActivity- \"onStart\" durchlaufen\n");
}
@Override
protected void onResume()
{
    super.onResume();
    addText("FirstActivity- \"onResume\" durchlaufen\n");
}
@Override
protected void onPause()
{
    super.onPause();
    addText("FirstActivity- \"onPause\" durchlaufen\n");
}
@Override
protected void onRestart()
{
    super.onRestart();
    addText("FirstActivity- \"onRestart\" durchlaufen\n");
}
@Override
protected void onStop()
{
    super.onStop();
    addText("FirstActivity- \"onStop\" durchlaufen\n");
}
//Innere Listener-Klasse:
class ButtonOnClickListener implements OnClickListener
{
    @Override 
    public void onClick(View view)
    {
        ausgabe+="Button \"second_activity\" geklickt\n ";
        Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
        FirstActivity.this.startActivity(intent);           
    }
}

}

Возможно ли вытащить этот метод

private  void addText(String text)
{
ausgabe+=text;
tvAnzeige.setText(ausgabe);
}  

чтобы оба могли его использовать. сам попробовал но не хватает знаний, выдает ошибки.

import android.widget.TextView;
public class addText extends Object
{
 private String ausgabe=" ";
 public TextView tvAnzeige;
 private  void addText(String text) 
{
    ausgabe+=text;
    tvAnzeige.setText(ausgabe);
}
} 
Answer 1

Я бы предложил вообще не повторятся используя ООП.

Создадим базовую активити:

public abstract  class BaseActivity extends Activity{
     private String ausgabe=" ";
     public TextView tvAnzeige;
     private  void addText(String text){
        ausgabe+=text;
        tvAnzeige.setText(ausgabe);
     }
     @Override
     public void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);
         tvAnzeige=(TextView)this.findViewById(R.id.anzeige);
         addText(this.getClass().getSimpleName() + " onCreate\" durchlaufen\n");
     }
}

А потом использовать примерно так:

public class FirstActivity extend BaseActivity{
     //onCreate/onStart...
}

И аналогично вторую.

READ ALSO
Как работать с AlarmManager?

Как работать с AlarmManager?

Есть класс, который наследуется от Service, этот класс вызывает уведомление

540
стрелки в fotorama

стрелки в fotorama

много раз пользовался fotorama, но дошло дело до того, чтобы вынести стрелки управления за пределы контейнера и все - срабатывает overflow:hidden, а без...

638
Плохо ли скрывать html элементы при помощи display: none;? [требует правки]

Плохо ли скрывать html элементы при помощи display: none;? [требует правки]

Как это влияет на работу сайта и индексацию в поисковых системах?

384
Не срабатывает focus на div

Не срабатывает focus на div

Не работает :focus не могу понять почему,с :active и :hover все хорошо, что не так?

410