2017-07-06 12 views
0

私は2つの異なる活動で示したいボタンを持っています。ボタンアクションは、オン/オフ機能の切り替えのような両方のアクティビティで同じことを行います。2つの異なる活動で共通のボタンを持つ方法は?

両方のアクティビティでコードをコピーして貼り付けることなく、両方のアクティビティで同じボタンを取得する良い方法はありますか?

答えて

0

あなたがインターフェイスを使用することによって達成することができます委任アクションが第三の目的に

public class Activity1 extends AppCompatActivity { 

    private Delegate delegate = new Delegate(); 

    public void onCreate(...) { 
     .... 
     button.setOnClickListener(v -> delegate.doSomething()); 
    } 
} 

public class Activity2 extends AppCompatActivity { 

    private Delegate delegate = new Delegate(); 

    public void onCreate(...) { 
     .... 
     otherButton.setOnClickListener(v -> delegate.doSomething()); 
    } 
} 

public class Delegate { 

    public void doSomething() { 
     ... 
    } 

} 
-1
public class ActivityOne extends Activity implements MyInterface { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // Set up activity. Get a reference to the button 
     myButton.setOnClickListener(new MyClickListener(some parameters)); 
    } 
// Some methods 
} public class ActivityTwo extends Activity implements MyInterface { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // Set up activity. Get a reference to the button 
     myButton.setOnClickListener(new MyClickListener(some parameters)); 
    } 

    // Some methods 
} 
public class MyClickListener implements View.OnClickListener { 

    public interface MyInterface{ some methods } 

    public MyClickListener(some parameters) { } 

    @Override 
    public void onClick(View v) { 
     //Do whatever you need to do 
    } 
} 

を実行するには...

+0

はなぜactiviesは 'MyInterface'を実装するのです? – Pelocho

+0

MyInterfaceにはボタンロジックがあるため。また、2つのアクティビティにボタンonClick機能を記述するのではなく、両方のアクティビティで同じMyInterfaceのボタンロジックを使用できます。 – Goutham

+0

私はあなたがインターフェイスが何であるかについて勘違いをしていると思います。 'インターフェース'は、実装するクラスが満たさなければならない契約(消去**が存在しなければならないメソッド)を定義します。 'interface' **はどんなロジックも定義しません**。実装定義ロジック(私がそうではないと思うデフォルト実装のメソッドについて話していない限り) – Pelocho

関連する問題