Я пытаюсь поместить кнопку совместного доступа в свою панель действий, и она срабатывает, когда я пытаюсь запустить приложение.Кнопка Share, не работающая над приложением
Моя ошибка ниже:
java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.getActionProvider()
at android.support.v7.view.menu.MenuItemImpl.getActionProvider(MenuItemImpl.java:644)
at com.example.install.factapp.MainActivity.onCreateOptionsMenu(MainActivity.java:42)
at android.app.Activity.onCreatePanelMenu(Activity.java:2646)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:298)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:85)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:241)
at android.support.v7.app.AppCompatDelegateImplV7.preparePanel(AppCompatDelegateImplV7.java:1273)
at android.support.v7.app.AppCompatDelegateImplV7.doInvalidatePanelMenu(AppCompatDelegateImplV7.java:1553)
at android.support.v7.app.AppCompatDelegateImplV7.access$100(AppCompatDelegateImplV7.java:89)
at android.support.v7.app.AppCompatDelegateImplV7$1.run(AppCompatDelegateImplV7.java:129)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Вот мой main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/shareButton"
android:actionProviderClass="android.widget.ShareActionProvider"
android:title="@string/app_name"
android:showAsAction="always"/>
</menu>
И здесь основная деятельность со всем, в том числе импорта, так что я могу диагностировать мою Probel:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.LinearLayout;
import android.widget.ShareActionProvider;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView factBox;
TextView factNumberBox;
FactNumbers numbersHolder = new FactNumbers();
Facts factHolder = new Facts();
Backgrounds backs = new Backgrounds();
LinearLayout bg;
Animation scaleIn;
Animation slideOut;
private ShareActionProvider mShareActionProvider;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
factBox = (TextView) findViewById(R.id.factTextBox);
factNumberBox = (TextView) findViewById(R.id.numberBox);
bg = (LinearLayout) findViewById(R.id.background);
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.shareButton).getActionProvider();
mShareActionProvider.setShareIntent(getDefaultShareIntent());
return super.onCreateOptionsMenu(menu);
}
private Intent getDefaultShareIntent(){
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "SUBJECT");
intent.putExtra(Intent.EXTRA_TEXT,"Extra Text");
return intent;
}
public void genFact(View view) {
factBox.setText(factHolder.nextFact());
factNumberBox.setText(numbersHolder.nextFactNumbers());
slideOut = AnimationUtils.loadAnimation(this, R.anim.slideout);
factBox.startAnimation(slideOut);
}
public void previousFact(View view) {
factBox.setText(factHolder.previousFact());
factNumberBox.setText(numbersHolder.previousFactNumbers());
scaleIn = AnimationUtils.loadAnimation(this, R.anim.slidein);
factBox.startAnimation(scaleIn);
}
public void randomButton(View view) {
factBox.setText(factHolder.randomButton());
factNumberBox.setText(factHolder.randomNumber());
}
}
Я предлагаю вам редактировать свой вопрос, разместив полные трассировки стеки и полную активность, которая имеет эту 'onCreateOptionsMenu()' код в нем. Это похоже на то, что вы можете смешивать две разные версии исполняемых элементов (native и 'appcompat-v7'). – CommonsWare
@CommonsWare Просто отредактирован. Благодарю. –