は、だから私は、このインターフェイス持って言うことができます:インタフェースと抽象クラスのコンストラクタ?
public interface IBox
{
public void onEvent(int eventType, View control, Object data);
}
をそして、私はクラスのアクセスを持っていること:
public class Rectangle
{
private IBox onEvent;
public Rectangle(Context context, View rowRoot) {
super(context);
onEvent = (Rectangle) context;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonClick:
// send data : data1 and data2;
onEvent.onEvent(data1,null, data2);
break;
}
と私はクラスがIBox
を実装します:
public abstract class BaseActivity implements IBox
{
@Override
public void onEvent(int data1, View data, Object data2)
{
//do something here
}
}
と私が持っていますクラスBaseActivity
クラス:
public class HomeBaseActivity extends BaseActivity
{
// transit Activity here, or send intent....
}
は、最終的な私は、クラスのメインはHomeBaseActivity
拡張しています
public class HomeActivity extends HomeBaseActivity
{
@Override
public void onEvent(int data1, View data, Object data2)
{
switch (data1) {
//reciver data1 from class Rectangle
}
}
私の質問:
1、なぜDATA1クラスHomeActivityにreciverことができますか?
2、どのような体は、私を助けることができる?
//英語持つごみ、私はあなたが
Rectangle
でonClick()
から、我々はHomeActivity
にonEvent()
に値を渡すことができますなぜ不思議と自分の活動がContext
(すべてのを拡張していることをassumptingされていることを理解していますおかげ
あなたが投稿したコードは、 'Rectangle'クラスの変数' onEvent'が決して初期化されないので動作しません。実際のコードでは、 'HomeActivity'クラスのオブジェクトを' Rectangle'クラスの変数 'onEvent'に割り当てています。 –
申し訳ありませんが、あなたの質問は不明です。 *なぜdata1が受信可能なのか... ...それはどういう意味ですか? – GhostCat
@ Timothy Truckle:申し訳ありませんが、私はコンストラクタで初期化しましたが、私は投稿していませんので、私は投稿しません。 –