gpt4 book ai didi

android - 在android项目中使用ActionBarSherlock时没有这样的字段错误

转载 作者:行者123 更新时间:2023-11-29 20:14:55 25 4
gpt4 key购买 nike

我已将 ActionBarSherlock 库项目添加到我的项目中,但在运行时 mFragments.mAdded 处没有此类字段错误。

我的堆栈跟踪是:

12-06 00:40:00.480: E/AndroidRuntime(27990): java.lang.NoSuchFieldError: android.support.v4.app.Watson.mFragments
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:50)
12-06 00:40:00.480: E/AndroidRuntime(27990): at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:560)
12-06 00:40:00.480: E/AndroidRuntime(27990): at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:64)
12-06 00:40:00.480: E/AndroidRuntime(27990): at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:164)
12-06 00:40:00.480: E/AndroidRuntime(27990): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:512)
12-06 00:40:00.480: E/AndroidRuntime(27990): at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:881)
12-06 00:40:00.480: E/AndroidRuntime(27990): at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:297)
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:812)
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.view.Choreographer.doCallbacks(Choreographer.java:612)
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.view.Choreographer.doFrame(Choreographer.java:581)
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:798)
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.os.Handler.handleCallback(Handler.java:733)
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.os.Handler.dispatchMessage(Handler.java:95)
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.os.Looper.loop(Looper.java:146)
12-06 00:40:00.480: E/AndroidRuntime(27990): at android.app.ActivityThread.main(ActivityThread.java:5602)
12-06 00:40:00.480: E/AndroidRuntime(27990): at java.lang.reflect.Method.invokeNative(Native Method)
12-06 00:40:00.480: E/AndroidRuntime(27990): at java.lang.reflect.Method.invoke(Method.java:515)
12-06 00:40:00.480: E/AndroidRuntime(27990): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
12-06 00:40:00.480: E/AndroidRuntime(27990): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
12-06 00:40:00.480: E/AndroidRuntime(27990): at dalvik.system.NativeStart.main(Native Method)

Watson 类如下所示:

public abstract class Watson extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener {
private static final String TAG = "Watson";
/** Fragment interface for menu creation callback. */
public interface OnCreateOptionsMenuListener {
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater);
}
/** Fragment interface for menu preparation callback. */
public interface OnPrepareOptionsMenuListener {
public void onPrepareOptionsMenu(Menu menu);
}
/** Fragment interface for menu item selection callback. */
public interface OnOptionsItemSelectedListener {
public boolean onOptionsItemSelected(MenuItem item);
}

private ArrayList<Fragment> mCreatedMenus;
///////////////////////////////////////////////////////////////////////////
// Sherlock menu handling
///////////////////////////////////////////////////////////////////////////

@Override
public boolean onCreatePanelMenu(int featureId, Menu menu) {
if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);

if (featureId == Window.FEATURE_OPTIONS_PANEL) {
boolean result = onCreateOptionsMenu(menu);
if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result);

MenuInflater inflater = getSupportMenuInflater();
boolean show = false;
ArrayList<Fragment> newMenus = null;
if (mFragments.mAdded != null) {
for (int i = 0; i < mFragments.mAdded.size(); i++) {
Fragment f = mFragments.mAdded.get(i);
if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnCreateOptionsMenuListener) {
show = true;
((OnCreateOptionsMenuListener)f).onCreateOptionsMenu(menu, inflater);
if (newMenus == null) {
newMenus = new ArrayList<Fragment>();
}
newMenus.add(f);
}
}
}

if (mCreatedMenus != null) {
for (int i = 0; i < mCreatedMenus.size(); i++) {
Fragment f = mCreatedMenus.get(i);
if (newMenus == null || !newMenus.contains(f)) {
f.onDestroyOptionsMenu();
}
}
}

mCreatedMenus = newMenus;

if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show);
result |= show;

if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
return result;
}
return false;
}

@Override
public boolean onPreparePanel(int featureId, View view, Menu menu) {
if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu);

if (featureId == Window.FEATURE_OPTIONS_PANEL) {
boolean result = onPrepareOptionsMenu(menu);
if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onPreparePanel] activity prepare result: " + result);

boolean show = false;
if (mFragments.mAdded != null) {
for (int i = 0; i < mFragments.mAdded.size(); i++) {
Fragment f = mFragments.mAdded.get(i);
if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnPrepareOptionsMenuListener) {
show = true;
((OnPrepareOptionsMenuListener)f).onPrepareOptionsMenu(menu);
}
}
}

if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + show);
result |= show;

result &= menu.hasVisibleItems();
if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
return result;
}
return false;
}

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);

if (featureId == Window.FEATURE_OPTIONS_PANEL) {
if (onOptionsItemSelected(item)) {
return true;
}

if (mFragments.mAdded != null) {
for (int i = 0; i < mFragments.mAdded.size(); i++) {
Fragment f = mFragments.mAdded.get(i);
if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnOptionsItemSelectedListener) {
if (((OnOptionsItemSelectedListener)f).onOptionsItemSelected(item)) {
return true;
}
}
}
}
}
return false;
}

public abstract boolean onCreateOptionsMenu(Menu menu);

public abstract boolean onPrepareOptionsMenu(Menu menu);

public abstract boolean onOptionsItemSelected(MenuItem item);

public abstract MenuInflater getSupportMenuInflater();
}

最佳答案

我遇到这个问题是因为操作栏 sherlock 库是用 android-support-v4 编译的,但在运行时这个库是由 v13 执行的,所以我从项目中删除了 v13 支持,我的问题就解决了。

关于android - 在android项目中使用ActionBarSherlock时没有这样的字段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34110669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com