- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
几个小时以来,我一直在寻找解决方案。我只想在 ActionBar 下添加一个开关(就像在蓝牙设置中一样)。我在这里发现了一个类似的问题,但它可能是旧的。不管怎样,这是我的代码:
主要 Activity :
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
MenuItem item = menu.findItem(R.id.myswitch);
switchButton = (Switch) item.getActionView();
return super.onCreateOptionsMenu(menu);
}
menu_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_switch"
android:title="off/on"
app:showAsAction="always"
app:actionLayout="@layout/switchlayout"
app:actionViewClass="android.support.v7.widget.Switch" />
</menu>
switchlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Switch
android:id="@+id/myswitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:background="#1E88E5" />
</RelativeLayout>
但无论我做什么,我总是得到:
Attempt to invode ... getActionView()' on a null object reference
我很困惑,因为我刚刚在定义 R.id.myswitch
之前的那一行定义了 item,我搞砸了吗?
最佳答案
除了简单的错误输入(它应该是 menu_switch
以匹配您的 XML),根据 action view training , 你必须使用 MenuItemCompat.getActionView()提取 ActionView
(并且,在您的情况下,将其转换为 SwitchCompat
,因为没有 android.support.v7.widget.Switch
) .
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
MenuItem item = menu.findItem(R.id.menu_switch);
switchButton = (SwitchCompat) MenuItemCompat.getActionView(item);
return super.onCreateOptionsMenu(menu);
}
关于java - 为什么 getActionView() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33535882/
今天我决定将我的 android 应用从 Java 翻译成 Kotlin! :) 但是当我输入这个时我很惊讶: val searchItem = menu.findItem(R.id.action_s
我正在实现这样的 SearchView: MenuItem search = menu.findItem(R.id.search); SearchView searchView = (Sear
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我有一个简单的 Activity public class TestActivity extends AppCompatActivity { @Override protected v
我正在尝试为我的菜单项实现自定义布局并通过许多解决方案,每当我尝试在为我的 menuItem 的 actionLayout 指定的布局中获取 TextView 时,我都会收到 Null pointer
几个小时以来,我一直在寻找解决方案。我只想在 ActionBar 下添加一个开关(就像在蓝牙设置中一样)。我在这里发现了一个类似的问题,但它可能是旧的。不管怎样,这是我的代码: 主要 Activity
这在几天前还有效,但突然停止了。我只想在某些 fragment 可见时使用操作栏搜索小部件。 现在我无法获取 SearchView,现在 getActionView 总是返回 null。 search
我刚刚实现了 v7 AppCompat 支持库,但 MenuItemCompat.getActionView 在我测试的每个 Android 版本(4.2.2、2.3.4 ... .) SearchV
我正在尝试获取MenuItem的View。 @Override public boolean onOptionsItemSelected(MenuItem item) { View miVie
我正在尝试使用 appcompat 在我的操作栏中添加操作项。我在单击它时添加了搜索操作,我的应用程序因 NullPointerException 而崩溃。在 onCreateOptionsMenu
试图让搜索 View 在应用程序上工作。 SDK 最少 17 最多 22 在模拟器 api 18 上测试 菜单xml
我在我的应用程序中支持低至 API 15,当我尝试从我的菜单中获取 searchView 时,这些用户遇到了崩溃。 下面是我的代码: @Override public void onPrepareOp
我只是想通过代码调整 ActionBar MenuItem 的 View 。 不幸的是,getActionView 似乎总是返回 null! 我的代码: @Override public boolea
我有这个工作正常的菜单 xml: 但是当我开始使用 AppComap v7 时,我在使用 getActionView() 时遇到了 null 异常。 我将菜单布局更改为:
我正在尝试在 Actionbar 上添加搜索栏,但在 getActionVeiw() 上发现了 Nullpointer 异常。请帮助我解决这个问题,我已经提供了所需的详细信息。 我的 MainActi
我是一名优秀的程序员,十分优秀!