2017-09-14 10 views
1

私はMainActivityを持っており、インタフェースを使ってクラスと通信したいと思っています。私のMainActivityでインタフェースを介したクラスとアクティビティの通信

public interface MyInterface(){ 
    public void doAction(); 
} 

は、私は、コードのこの部分があります:私は別のクラス(NOT活性)を持っている場合は、どのように私は正しく、クラス間のリンクをしなければならない、だから今

public class MainActivity extends AppCompatActivity implements MyInterface(){ 

    //....some more code here 

    @Override 
    public void doAction() { 
     //any code action here 
    } 

    //....some more code here 

} 

を---インタフェース--- mainActivity ??

public class ClassB { 

    private MyInterface myinterface; 
    //........ 

    //...... how to initialize the interface 
} 

私は他のクラスのコンストラクタではClassBの

答えて

1

のインターフェイスを初期化して使用する方法について混乱しています:ClassB、引数としてインターフェイスを受け入れ、Activityの参照を渡す、あなたのActivityにそのオブジェクトを保持します。そのような

:FYI

public class MainActivity extends AppCompatActivity implements MyInterface() 
{ 
    private ClassB ref; // Hold reference of ClassB directly in your activity or use another interface(would be a bit of an overkill) 

    @Override 
    public void onCreate (Bundle savedInstanceState) { 
     // call to super and other stuff.... 
     ref = new ClassB(this); // pass in your activity reference to the ClassB constructor! 
    } 

    @Override 
    public void doAction() { 
     // any code action here 
    } 
} 

public class ClassB 
{ 
    private MyInterface myinterface; 

    public ClassB(MyInterface interface) 
    { 
     myinterface = interface ; 
    } 

    // Ideally, your interface should be declared inside ClassB. 
    public interface MyInterface 
    { 
     // interface methods 
    } 
} 

が、これはビューとプレゼンタークラスはMVPのデザインパターンにどのように相互作用するかもあります。

+0

あなたの答えのコードの最後の部分は、私が行方不明だった部分でした。 – codeKiller

+0

@eddie happy coding :) –

1
public class MainActivity extends AppCompatActivity implements 
MyInterface 
{ 
    OnCreate() 
    { 
     ClassB classB= new ClassB(this); 
    } 
} 

public class ClassB 
{ 
    private MyInterface myinterface; 

    public ClassB(MyInterface myinterface) 
    { 
     this.myinterface=myinterface; 
    } 

    void anyEvent() // like user click 
    { 
     myinterface.doAction(); 
    } 
} 
関連する問題