小编Zag*_*rax的帖子

IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容

我使用的是ViewPager与例如ActionBar从Android文档拍摄选项卡在这里.

不幸的是,只要我调用该addTab方法,应用程序崩溃就会出现以下异常:

IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容!预期的适配器项目数为0,找到1.

这是FragmentPagerAdapter代码:

public static class TabsAdapter extends FragmentPagerAdapter
            implements ActionBar.TabListener, ViewPager.OnPageChangeListener {
        private final Context mContext;
        private final ActionBar mActionBar;
        private final ViewPager mViewPager;
        private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

        static final class TabInfo {
            private final Class<?> clss;
            private final Bundle args;

            TabInfo(Class<?> _class, Bundle _args) {
                clss = _class;
                args = _args;
            }
        }

        public TabsAdapter(Activity activity, ViewPager pager) {
            super(activity.getFragmentManager());
            mContext = activity;
            mActionBar …
Run Code Online (Sandbox Code Playgroud)

android illegalstateexception android-viewpager fragmentpageradapter

38
推荐指数
2
解决办法
5万
查看次数

没有在ActionBar中显示的动作项与showAsAction ="ifRoom"

我正在尝试将一些操作项添加到我的支持操作栏.在我的活动中,我还在操作栏中添加了选项卡.

这是活动的摘录:

public class ShowEmails extends ActionBarActivity implements ShowEmailsFragmentInteractionListener  {

    private IMAPClientService service;
    private boolean bound;

    private ActionBar ab;

    private MailDBHelper mdbhelper;
    private SQLiteDatabase db;

    private Intent client_service;

    <.........................>

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.client_service = new Intent(this, IMAPClientService.class);

        this.mdbhelper = new MailDBHelper(this.getApplicationContext(), MailDBHelper.MAIL_DB_NAME, null, MailDBHelper.MAIL_DB_VERSION);
        this.db = this.mdbhelper.openWriteable();

        this.ab = this.getSupportActionBar();
        this.ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        this.ab.show();

        Tab t = ab.newTab().setText(R.string.all_emails)
                .setTabListener(new TabListener<ShowEmailsFragment>(this, "all", ShowEmailsFragment.class));

        ab.addTab(t);

        new LoadTabsInBackground().execute();
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds …
Run Code Online (Sandbox Code Playgroud)

android android-actionbar

12
推荐指数
1
解决办法
1万
查看次数

如何检测脚本是否在虚拟机上运行?

我不认为这个问题需要任何解释.我正在编写一个可以启动虚拟机来模拟网络的软件.如果软件已在虚拟机上运行,​​我想禁用此功能.

我已经阅读过这篇文章:如何检测我的应用程序是否在虚拟机中运行? 但是我需要在Linux上做这个,而那篇文章只涉及Windows.

我将它标记为一个Perl问题,因为我要在Perl中执行此操作,但可能有一些文件在proc其他地方或其他地方进行检查,所有语言都是相同的.我其实不知道.

我有兴趣主要检测VirtualBox和KVM,因为那些是我正在使用的VM.

那么,有什么建议吗?

linux virtualization perl detection

8
推荐指数
1
解决办法
4837
查看次数

如何使用tkinter Canvas小部件制作Button?

我想从Canvas中获取一个按钮.我已尝试pack按钮小部件中的画布,但这不起作用.谷歌搜索了一下,我发现(这里:你如何在tkinter Canvas上创建一个Button?),Canvas方法create_window可能有所帮助.但是我使用它的方式应该有问题.

import Tkinter

DIM = 100

root = Tkinter.Tk()
frame = Tkinter.Frame(root)

button = Tkinter.Button(None, width=DIM, height=DIM, command=root.quit)

circle = Tkinter.Canvas(frame, width=DIM, height=DIM)
circle.create_oval(5, 5, DIM-5, DIM-5, fill="red")
circle.create_window(0, 0, window=button)

frame.grid()
circle.grid(row=1, column=1)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

如果我擦掉create_window线条,我可以看到我的画,但我不能(显然)点击它.但是通过这种方式,按钮小部件覆盖了我的圈子并显示了一个悲伤的空按钮.

基本上,我想创建一个内部涂有红色圆圈的按钮.

python tkinter button tkinter-canvas

7
推荐指数
2
解决办法
9584
查看次数

如何更改当前光标位置指示器的颜色?

当我打开一个终端时,我有一个带有白色字符的黑色背景.我还有一个绿色占位符,向我指示当前光标的位置.

在终端中运行的任何perl脚本期间,此行为是相同的.

如何在脚本中更改光标指示器的颜色(具体来说,我希望它消失一段时间然后再回来)?

我正在使用Linux和bash.

linux terminal console perl terminal-color

6
推荐指数
1
解决办法
4316
查看次数

将 sys/ioctl.ph 添加到 Perl 头文件

我需要使用 sys/ioctl.ph 并且它不包含在我的 slackware 发行版附带的 perl 版本 (5.12.3) 中。

我做了以下事情:

cd /usr/include
h2ph sys/ioctl.ph
cd /usr/lib64/perl5/site_perl/5.12.3/x86_64-linux-thread-multi/
mkdir sys
mv ioctl.ph sys
Run Code Online (Sandbox Code Playgroud)

现在 perl 解释器不会抱怨 sys/ioctl.ph,但这是我得到的错误:

Illegal declaration of subroutine Functions::ServerSocket::__INT16_C at /usr/lib64/perl5/site_perl/5.12.3/x86_64-linux-thread-multi/_h2ph_pre.ph line 164.

这是文件中导致第 164 行错误的内容:

unless (defined &__INT16_C(c)) { sub __INT16_C(c)() { &c } }

我不知道从哪里开始。Functions::ServerSocket 是我的模块之一,但我的文件中没有任何类似的功能。

perl ioctl

5
推荐指数
1
解决办法
935
查看次数

Word2vec中单词类比背后的运算是什么?

根据https://code.google.com/archive/p/word2vec/

最近的研究表明,词向量捕捉了许多语言规律,例如向量运算向量(‘巴黎’)-向量(‘法国’)+向量(‘意大利’)产生的向量非常接近向量(‘罗马’) '),并且向量('king') -向量('man') + vector('woman') 接近于向量('queen') [3, 1]。您可以通过运行 demo-analogy.sh 来尝试一个简单的演示。

所以我们可以尝试使用提供的演示脚本:

+ ../bin/word-analogy ../data/text8-vector.bin
Enter three words (EXIT to break): paris france berlin

Word: paris  Position in vocabulary: 198365

Word: france  Position in vocabulary: 225534

Word: berlin  Position in vocabulary: 380477

                                              Word              Distance
------------------------------------------------------------------------
                                           germany      0.509434
                                          european      0.486505
Run Code Online (Sandbox Code Playgroud)

请注意,这paris france berlin是演示建议的输入提示。问题是,如果我打开相同的词向量Gensim并尝试自己计算向量,我将无法重现这种行为。例如:

>>> word_vectors = KeyedVectors.load_word2vec_format(BIGDATA, binary=True)
>>> v = word_vectors['paris'] - word_vectors['france'] + word_vectors['berlin']
>>> word_vectors.most_similar(np.array([v]))
[('berlin', 0.7331711649894714), ('paris', 0.6669869422912598), ('kunst', 0.4056406617164612), ('inca', …
Run Code Online (Sandbox Code Playgroud)

python gensim word2vec word-embedding

5
推荐指数
1
解决办法
4269
查看次数

如何告诉gcc在哪里可以找到cc1?

每当我尝试编译任何 C 程序时都会遇到问题。成为最简单的 hello world:

#include <stdio.h>
int main() {
    printf("HelloWorld");
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试编译,我会收到以下错误:

gcc: error trying to exec 'cc1': execvp: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我在网上阅读,也在 stackoverflow 上阅读,在这种情况下gcc没有正确安装,我们必须重新安装它(或重新安装 build-essential,具体取决于发行版)。

但是,我不能走这条路。如果我寻找 cc1,我可以在我的系统上找到它:

$ locate cc1
/lib/modules/4.15.0-54-generic/kernel/drivers/iio/adc/cc10001_adc.ko
/usr/lib/gcc/x86_64-linux-gnu/7/cc1
/usr/lib/gcc/x86_64-linux-gnu/7/cc1plus
/usr/lib/gcc/x86_64-linux-gnu/7/libcc1.so
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so.0
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so.0.0.0
/usr/lib/x86_64-linux-gnu/libcc1.so.0
/usr/lib/x86_64-linux-gnu/libcc1.so.0.0.0
/usr/share/doc/libcc1-0
/usr/share/doc/libgcc1
/usr/share/doc/libisccc160
/usr/share/doc/libisccc160/changelog.Debian.gz
/usr/share/doc/libisccc160/copyright
/usr/share/lintian/overrides/libgcc1
----AND MORE----
Run Code Online (Sandbox Code Playgroud)

gcc符号链接到gcc-7

$ ls -l | grep gcc
-rwxr-xr-x 1 root root         428 May  7  2006 c89-gcc
-rwxr-xr-x 1 root root         454 Apr 11  2011 …
Run Code Online (Sandbox Code Playgroud)

c linux gcc

5
推荐指数
0
解决办法
1378
查看次数

我为什么要包含头文件?#include实际上如何运作?

起初,我在.h文件中编写我的函数,然后将其包含在内#include "myheader.h".然后,有人说我最好只添加这些文件的函数原型并将实际代码放在一个单独的.c文件中.现在,我能够编译更多.c文件以仅生成可执行文件,但此时我无法理解为什么我应该添加头文件,如果代码在另一个文件中.

此外,我看了系统中的标准C库(比如stdlib.h),在我看来只存储结构定义,常量和类似...我不太喜欢C(说实话,stdlib.h)对我来说几乎是中国人,当然中国人没有冒犯:)),但我没有发现任何一行"操作"代码.但是,我总是只包含它而不添加任何其他东西,我编译我的文件,好像'代码'实际上在那里.

有人可以解释一下这些东西是如何运作的吗?或者,至少,请指点一个好导游?我也搜索了Google和SO,但没有找到任何可以解释清楚的内容.

c header-files

4
推荐指数
1
解决办法
3348
查看次数

如果使用Ctrl + c关闭客户端,服务器将在"send"中死亡

我无法理解为什么这个应用程序死了send.这是服务器的代码:

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/un.h>
#include <stdlib.h>
#include <errno.h>

#define UNIX_PATH_MAX    108
#define SPATH "./sock"

int main() {
    int sfd, rv = 100, newfd;
    char b[100];
    char ok[3] = "ok\0";
    struct sockaddr_un sa;

    sfd = socket(AF_UNIX, SOCK_STREAM, 0);

    strncpy(sa.sun_path, SPATH, UNIX_PATH_MAX);
    sa.sun_family = AF_UNIX;

    if (bind(sfd, (struct sockaddr*)&sa, sizeof(sa)) == -1) {
        perror("bind");
        exit(EXIT_FAILURE);
    }

    if (listen(sfd, SOMAXCONN) == -1) {
        perror("listen");
        exit(EXIT_FAILURE);
    }

    if ((newfd = accept(sfd, NULL, NULL)) == -1) {
        perror("accept"); …
Run Code Online (Sandbox Code Playgroud)

c sockets send

4
推荐指数
1
解决办法
7749
查看次数