2017-03-11 16 views
-2

私は50のアクティビティがあります。すべてのアクティビティで次のようなランダムな新しいアクティビティが開きます:複数のアクティビティに同じコードを含める方法(Androidスタジオ)

public void openNewActivity(View view) { 

Random generator = new Random(); 
int number = generator.nextInt(50) + 1; 

Class activity = null; 

switch(number) { 
case 1: activity = ActivityNumber1.class; break; 
case 2: activity = ActivityNumber2.class; break; 
... 
case 50: activity = ActivityNumber50.class; break;} 

Intent intent = new Intent(this, activity); 
    startActivity(intent); 

ここで、このコードを1回だけ記述してすべてのアクティビティに含めることができますか?

私はすでに活動との間で使用される数値を維持するための公共int型を持っている:あなたの中

class NewActivity 
{ 
    static void openRandom() 
    { 
     // Insert your code here. 
    } 
} 

そして:必要に応じてそれを再利用できるように

public class counter_global extends Application... 
+1

50アクティビティ?新しいものを作成する代わりに、それらの1つを再利用できますか? –

+0

私はそれがよりダイナミックになるかもしれないが、すべてのアクティビティが異なるレイアウトと内容を持っていると思います。 –

答えて

1

は、クラスでそれをカプセル化アクティビティ:

NewActivity.openRandom(); 
+0

okもっとスペシャルなアドバイスが必要 –

+0

私は自分の答えを更新しました。 –

1

グローバルな抽象アクティビティクラス "MainActivity"を作成する必要があります。それぞれのアクティビティがそのクラスを継承するようにします。したがって、どんなサブアクティビティもコードを継承し、どこからでも利用できるようになります。

例:

public abstract class MainActivity extends Activity { 
    public void openNewActivity(View view) { 

    Random generator = new Random(); 
     int number = generator.nextInt(50) + 1; 

     Class activity = null; 

     switch(number) { 
     case 1: activity = ActivityNumber1.class; break; 
     case 2: activity = ActivityNumber2.class; break; 
     ... 
     case 50: activity = ActivityNumber50.class; break;} 

     Intent intent = new Intent(this, activity); 
     startActivity(intent); 
    } 
} 

そして、あなたのサブクラスの活動

public class OwnActivity1 extends MainActivity { 


} 

そして、あなたのOwnActivity1で、メソッド「openNewActivityは、」利用できるようになりますし、あなたが必要な場所にそれを呼び出すことができます。この方法の主な利点は、必要に応じて後ですべてのアクティビティを一度に変更できるようにすることです。たとえば、MainActivityを変更して右上に「パラメータ」ボタンを追加したり、背景色やcontextMenu、またはactionBarなどを設定することができます。

0

このような1-作成したクラス:

public class Util 
{ 
    public static Class getRandomActivityClass(){ 
    Random generator = new Random(); 
    int number = generator.nextInt(50) + 1; 
    Class activity = null; 
    switch(number) { 
     case 1: activity = ActivityNumber1.class; break; 
     case 2: activity = ActivityNumber2.class; break; 
     ... 
     case 50: activity = ActivityNumber50.class; break; 
    } 
    return activity;  
    } 
} 

そして、それぞれの活動でそれを使用する:

Intent intent = new Intent(this, Util.getRandomActivityClass()); 
startActivity(intent); 

2 - あなたは基本Activityクラスを作成して、ベースのメソッドを入れて、ベースから活動を継承することができますクラス:

public class BaseActivity extends ActionBarActivity { 

    public void runRandomActivityClass(){ 
    Random generator = new Random(); 
    int number = generator.nextInt(50) + 1; 
    Class activity = null; 
    switch(number) { 
     case 1: activity = ActivityNumber1.class; break; 
     case 2: activity = ActivityNumber2.class; break; 
     ... 
     case 50: activity = ActivityNumber50.class; break; 
    } 

    Intent intent = new Intent(this, activity); 
    startActivity(intent); 
    } 

} 
関連する問題