下面列出了android.view.Window#Callback ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void setContentView(int layoutResId) {
if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId);
if (mContentParent == null) {
installDecor();
} else {
mContentParent.removeAllViews();
}
mActivity.getLayoutInflater().inflate(layoutResId, mContentParent);
Window.Callback callback = mActivity.getWindow().getCallback();
if (callback != null) {
callback.onContentChanged();
}
initActionBar();
}
@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);
if (mContentParent == null) {
installDecor();
} else {
mContentParent.removeAllViews();
}
mContentParent.addView(view, params);
Window.Callback callback = mActivity.getWindow().getCallback();
if (callback != null) {
callback.onContentChanged();
}
initActionBar();
}
/**
* 通过View获取Dialog
*/
private static Dialog getDialogFromView(View v) {
Object result = callMethod(v, "getWindow");
if (result instanceof Window) {
Window window = (Window) result;
Window.Callback callback = window.getCallback();
if (callback instanceof Dialog) {
return (Dialog) callback;
}
}
return null;
}
/**
* 替换WindowCallback
*
* @param activity Activity
*/
public static void replaceWindowCallback(Activity activity) {
activity.getWindow().setCallback(activity);
Window.Callback callback = activity.getWindow().getCallback();
WindowCallbackWorker callbackWorker = new WindowCallbackWorker();
callbackWorker.mTarget = callback;
callbackWorker.mActivity = activity;
activity.getWindow().setCallback(callbackWorker);
}
@SuppressWarnings("WeakerAccess") // To maintain visibility compatibility with AppCompatActivity
public ActionBar getSupportActionBar() {
Window.Callback classicCallback = getWindow().getCallback();
try {
return appCompatDelegate == null ? null : appCompatDelegate.getSupportActionBar();
} catch (IllegalStateException e) {
// Thrown in "Classic" mode
appCompatDelegate = null;
AppInventorCompatActivity.classicMode = true;
getWindow().setCallback(classicCallback);
return null;
}
}
public static void attach(@NonNull Activity activity) {
if (activity instanceof AppCompatActivity) {
LayoutInflaterCompat.setFactory(activity.getLayoutInflater(),
new RobotoInflater(((AppCompatActivity) activity).getDelegate(), activity.getWindow()));
} else {
final Window window = activity.getWindow();
final Window.Callback callback = window.getCallback();
LayoutInflaterCompat.setFactory(activity.getLayoutInflater(),
new RobotoInflater(AppCompatDelegate.create(activity, StubAppCompatCallback.INSTANCE), window));
window.setCallback(callback);
}
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Window window = activity.getWindow();
Window.Callback callback= window.getCallback();
window.setCallback(new MonitorCallback(activity,callback));
}
MonitorCallback(Activity activity, Window.Callback callback){
this.callback = callback;
this.activity = activity;
}
public WindowCallbackProxy(Activity activity, Window.Callback callback) {
mCallback = callback;
mActivity = activity;
}
public MyWindowCallback(Window.Callback localCallback, Activity activity) {
mLocalCallback = localCallback;
mActivity = activity;
}
public WindowCallbackProxy(Activity activity, Window.Callback callback) {
mCallback = callback;
mActivity = activity;
}
public static Void windowCallback(Window.Callback arg) {
return BaseDSL.attr("windowCallback", arg);
}