Активность вызова из приложения
Я пытаюсь использовать цифры из Twitter. AuthCallBack не запускается при использовании из действия и недавнего документа, в котором говорится об использовании AuthCallBack из класса Application.
Теперь у меня AuthCallBack работает правильно и onSuccess мне нужно вызвать метод из моей MainActivity. Как мне добиться этого из класса приложений. Пожалуйста, помогите. Я дал код ниже.
public class MyApplication extends Application {
private AuthCallback authCallback;
@Override
public void onCreate() {
super.onCreate();
authCallback = new AuthCallback() {
@Override
public void success(DigitsSession session, String phoneNumber) {
//call myFunction() from MainActivity here
}
@Override
public void failure(DigitsException exception) {
}
};
}
public AuthCallback getAuthCallback(){
return authCallback;
}
}
2 ответа
Вы можете использовать BroadcastManager для архивации того же. Ниже приведен пример кода, который вы можете использовать
Из приложения:
@Override
public void success(DigitsSession session, String phoneNumber) {
Intent intent = new Intent(Constants.FILTER_LOGIN_SUCCESS);
intent.putExtra(Constants.EXTRA_PHONE_NUMBER, phoneNumber);
LocalBroadcastManager.getInstance(mInstance).sendBroadcast(intent);
}
Класс деятельности:
@Override
protected void onResume() {
super.onResume();
LocalBroadcastManager.getInstance(SignUpActivity.this).registerReceiver(broadcastReceiver,
new IntentFilter(Constants.FILTER_LOGIN_SUCCESS));
}
@Override
protected void onDestroy() {
super.onDestroy();
LocalBroadcastManager.getInstance(SignUpActivity.this).unregisterReceiver(broadcastReceiver);
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String phoneNumber = intent.getStringExtra(Constants.EXTRA_PHONE_NUMBER);
navigateToAnotherActivty();
}
};
С помощью интерфейса вы можете добиться этого
Напишите интерфейс примерно так
public interface onSuccessListner {
void onSuccess(DigitsSession session,String phoneNumber);
}
Реализуйте этот интерфейс в своей основной деятельности
public class MainActivity extends AppCompatActivity implements onSuccessListner{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onSuccess(DigitsSession session,String phoneNumber) {
//write your method calling or operations here
}
}
В вашем классе приложения реализуйте Application.ActivityLifecycleCallbacks, чтобы проверить, создано основное действие или нет. Если основное действие создано, примените контекст основного действия к списку.
При создании внутри вашего метода обратного вызова вызовите метод успеха Main Activity.
public class MyApplctn extends Application implements Application.ActivityLifecycleCallbacks {
onSuccessListner onSuccessListner;
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
authCallback = new AuthCallback() {
@Override
public void success(DigitsSession session, String phoneNumber) {
//call myFunction() from MainActivity here
if(onSuccessListner!=null){
onSuccessListner.onSuccess(session,phoneNumber);
}
}
@Override
public void failure(DigitsException exception) {
}
};
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
if (activity instanceof MainActivity) {
onSuccessListner= (com.mmadapps.myapplication.onSuccessListner) activity;
}
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
Надеюсь, что это поможет вам