我正在尝试使用 Twitter 中的数字。 从活动中使用时,不会触发 AuthCallBack ,而最近document说要使用应用程序类中的AuthCallBack。
现在我有 AuthCallBack 正常工作,onSuccess我需要从我的MainActivity调用一个方法。我如何从Application类实现它。请帮助。我已经给出了以下代码。
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;
}
}
答案 0 :(得分:5)
您可以使用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();
}
};
答案 1 :(得分:3)
使用界面即可实现此目的
编写类似这样的界面
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以检查主要活动是否已创建,如果创建的主要活动将主要活动的上下文应用于列表器
在回调方法内部创建时,调用MainActivity的成功方法
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) {
}
}
希望这会对你有所帮助