sendUserActionEvent() 是空的。

92

我这里有一个非常棘手的问题。当我点击旋转器、打开菜单项或者长按打开上下文菜单时,我会得到相同的Logcat消息:

08-02 21:20:57.264: E/ViewRootImpl(31835): sendUserActionEvent() mView == null

标记是ViewRootImpl,信息是sendUserActionEvent() mView == null。我在网上没有找到任何有用的东西。我搜索了Android源代码,并找到了一些关于mView的引用,但我找不到打印此日志消息的文件。参考资料,我使用运行4.2.2或API 17的三星Galaxy S4。在Nexus 7上调试时,不会出现相同的消息,您有什么想法吗?这是三星特定的问题吗?


可能是重复的问题:点击按钮后sendUserActionEvent() mView== null - akshay
检查一下我对同样问题的回答,它可能会修复你的代码。 https://dev59.com/Hn7aa4cB1Zd3GeqPsqGc#40619021 - A.J
6个回答

95

我也在S4上遇到了同样的问题。我已经在Galaxy Grand、HTC、Sony Experia上测试了该应用,但只在S4上遇到了这个问题。你可以忽略它,因为它与你的应用程序无关。


2
当您的Wi-Fi打开时,您是否连接到互联网?如果无法连接到互联网,将出现此消息。 - App Work
35
WIFI/连接理论是错误的。这两者对我都有效,但我仍然在S4上收到此错误。 - radley
@yahska 嗯,我也遇到了同样的问题,不过你解决了那个问题吗? - kumar Sudheer
2
以上的Logcat消息有时会被另一条更详细的消息所先行:"尝试完成一个输入事件,但输入事件接收器已经被处理"。 - Hartmut Pfitzinger
1
我认为这个错误与设备上的新版安卓有关,我在Note 3上遇到了这个问题,它使用的是5.0版本,而在使用4.4.2版本的Note 3上则没有任何问题。另外,我认为这与对话框有关,因为当弹出蓝牙密码输入框时发生了这个问题。 - Chris Sim
显示剩余11条评论

5

我曾在我的Galaxy S4手机上解决了这个问题,方法是将context.startActivity(addAccountIntent);替换为startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));


4
没问题。这是我在同样的API中解决相同问题的方法。如果你已经在想要的上下文中,就不需要调用context.startActivity()。只需调用startActivity()即可,这样不会出现错误。谢谢大家。 - Shad
请您提供一个示例代码来帮助解决这个问题吗?谢谢。 - Brandon
1
Intent addAccountIntent = new Intent(Settings.ACTION_ADD_ACCOUNT); addAccountIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); addAccountIntent.putExtra(Settings.EXTRA_AUTHORITIES, new String[] {"com.app.yourapp"}); startActivity(addAccountIntent); 意图addAccountIntent =新的意图(Settings.ACTION_ADD_ACCOUNT); addAccountIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); addAccountIntent.putExtra(Settings.EXTRA_AUTHORITIES, 新的String []{"com.app.yourapp"}); startActivity(addAccountIntent); - droid-zilla
1
@AmitSinha 关于你的活动/片段。在你的代码中,你将启动另一个活动的部分。 - Neon Warge

0

在我对光标相关的代码进行了一些修改之后,我也遇到了类似的问题。

public boolean onContextItemSelected(MenuItem item) 
{
        AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
        Cursor c = (Cursor)adapter.getItem(info.position);
        long id = c.getLong(...);
        String tempCity = c.getString(...);
            //c.close();
...
}

在我将 //c.close(); 注释掉之后,它运行得很好。 您可以尝试并更新一下。 初始设置是... 我在 Fragment 中有一个列表视图,并尝试通过上下文菜单从列表中删除项目。


0

在Galaxy Tab和Xperia S上出现了同样的问题,在卸载并重新安装后,问题似乎消失了。

突然出现这个问题的代码是:

public void unlockMainActivity() {
    SharedPreferences prefs = getSharedPreferences("CALCULATOR_PREFS", 0);
    boolean hasCode = prefs.getBoolean("HAS_CODE", false);
    Context context = this.getApplicationContext();
    Intent intent = null;

    if (!hasCode) {
        intent = new Intent(context, WellcomeActivity.class);
    } else {
        intent = new Intent(context, CalculatingActivity.class);
    }
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    (context).startActivity(intent);
}

0

这与在两个不同的活动中具有相同ID的两个按钮有关,有时Android Studio找不到,您只需为按钮提供新的ID并重新构建项目即可。


0

所有三星设备都会出现这个错误,解决方法是:在你的清单文件中的活动声明中添加这一行。

android:configChanges="orientation|screenSize"

同时,当您启动该活动时,应执行以下操作:

Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
intent.setType(Settings.ACTION_SYNC_SETTINGS);
CurrentActivity.this.startActivity(intent);
finish();

我使用这个方法将一个活动设置为全屏模式,但是这个问题并不需要全屏代码。但是在某些情况下,如果有人需要它,你可以参考这个问题的其余代码: 如何使VideoView全屏

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接