以下是我的活动代码.在这里我使用支持库appcompat
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.ShareActionProvider;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
MenuItem item = (MenuItem) menu.findItem(R.id.share_options);
ShareActionProvider shareAction = (ShareActionProvider) MenuItemCompat
.getActionProvider(item);
Intent shareIntent = new Intent(Intent.ACTION_SEND)
.setAction(Intent.ACTION_SEND)
.putExtra(Intent.EXTRA_TEXT, "MobiTexter")
.setType("text/plain");
shareAction.setShareIntent(shareIntent);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
}
以下是我的XML文件,用于菜单选项,即ShareActionProvider Widget …
我用 ViewPager 制作了一个非常简单的 Android 拼图应用程序,让用户可以浏览一系列拼图。我在生产中看到一个错误,我不知道如何重现或调试:
java.lang.IllegalStateException:
at android.support.v4.view.ViewPager.a (ViewPager.java:204)
at android.support.v4.view.ViewPager.c (ViewPager.java:2)
at android.support.v4.view.ViewPager.onMeasure (ViewPager.java:207)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure (ActionBarOverlayLayout.java:257)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical (LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure (LinearLayout.java:685)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure (DecorView.java:721)
at android.view.View.measure (View.java:22002)
at android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2414)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2159)
at android.view.ViewRootImpl.doTraversal …Run Code Online (Sandbox Code Playgroud) 我正在尝试ShareActionProvider在片段中的上下文操作栏中使用支持库来实现.我在正常的操作栏(onCreateOptionsMenu())中没有遇到任何问题,但是当我在CAB(MultiModeListener接口中的onCreateActionMode())中尝试它时,我收到错误:
getActionProvider: item does not implement SupportMenuItem; returning null
Run Code Online (Sandbox Code Playgroud)
通过https://cells-source.cs.columbia.edu/plugins/gitiles/platform/frameworks/support/+/30837f1095c803f332f4a1c3f0917c8afdd50156/v4/java/android/support/v4/view/MenuItemCompat.java查看Android源代码,问题似乎是因为我MenuItem不是以下的实例SupportMenuItem:
public static ActionProvider getActionProvider(MenuItem item) {
if (item instanceof SupportMenuItem) {
return ((SupportMenuItem) item).getSupportActionProvider();
}
// TODO Wrap the framework ActionProvider and return it
Log.w(TAG, "getActionProvider: item does not implement SupportMenuItem; returning null");
return null;
}
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?
清单:
<activity
android:name=".myactivity_ActionBarActivity"
android:theme="@style/Theme.AppCompat.Light"
android:windowSoftInputMode="stateUnchanged">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
活动:
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
public class myactivity_ActionBarActivity extends …Run Code Online (Sandbox Code Playgroud) 我一直在寻找解决方案3到4天.我尝试过: 使用支持库共享操作提供程序时出现空指针异常, 或者 为什么MenuItemCompat.getActionProvider返回null?和其他一些但我仍然在ShareActionProvider上得到null.我是开发Android应用程序的新手,所以我真的需要一些帮助.
我的xml菜单文件是:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_share"
android:title="@string/action_share"
app:showAsAction="always"
android:icon="@android:drawable/ic_menu_share"
android:actionProviderClass="android.support.v7.widget.ShareActionProvider"/></menu>
Run Code Online (Sandbox Code Playgroud)
我的片段是:
public static class DailyActivityFragment extends Fragment {
private static final String LOG_TAG = "Dailyshare";
private ShareActionProvider mShareActionProvider;
public DailyActivityFragment() {
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
return rootView;
}
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
inflater.inflate(R.menu.detailfragment, menu);
MenuItem item = menu.findItem(R.id.action_share);
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
if (mShareActionProvider != null) {
mShareActionProvider.setShareIntent(createShareIntent());
}else{ …Run Code Online (Sandbox Code Playgroud) android ×4