2016-09-19 1 views
0

Привет в моем Lib модуле у меня интерфейс, как это,Android интерфейс Invoke внутри файла класса в Lib модуле

public interface ServiceData { 
    void deviceName(); 
} 

я реализую это в главном модуле приложения в деятельности следующим образом,

MainActivity extends AppCompatActivity implements ServiceData 

    @Override 
    public void deviceName() { 

    } 

} 

Мне нужно вызвать это в файле класса, который также находится в модуле lib. Я искал и нашел решение, как

ServiceData service = (ServiceData) context; 

Но он бросает ClassCastException. Как я могу вызвать это в файле класса? Любая помощь будет оценена и заблаговременно.

+0

Очевидно 'context' не является экземпляром' MainActivity', ни какой-либо 'реализации ServiceData' ... вы не можете бросить некоторые случайные' 'context' к ServiceData' – Selvin

+0

Ладно, спасибо you.How я могу вызвать интерфейс ? –

+0

для вызова ** deviceName() ** вам понадобится ссылка на объект интерфейса. –

ответ

1

Использование localbroadcastmanager.
В лите

Намерение намерения = новое намерение («YOUR_INFO»);

LocalBroadcastManager manager = LocalBroadcastManager.getInstance(context); 
manager.sendBroadcast(intent); 

In app. 

IntentFilter intentFilter = new IntentFilter("YOUR_INFO"); 

LocalBroadcastManager manager = LocalBroadcastManager.getInstance(this); 
manager.registerReceiver(broadcastReceiver, intentFilter); 

private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     Log.d("MainActivity","your info" +" "+action); 
     if(action.equals("YOUR_INFO")) { 

     } 
    } 
}; 
+0

Спасибо, он работает. Но почему мы не можем достичь этого через интерфейс. –

Смежные вопросы