Активность вызова из приложения

Я пытаюсь использовать цифры из 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) {

    }
}

Надеюсь, что это поможет вам

Другие вопросы по тегам