小编Jas*_*ers的帖子

不在声明中的数组初始化语法

我可以写:

AClass[] array = {object1, object2}
Run Code Online (Sandbox Code Playgroud)

我也可以写:

AClass[] array = new AClass[2];
...
array[0] = object1;
array[1] = object2;
Run Code Online (Sandbox Code Playgroud)

但我不能写:

AClass[] array;
...
array = {object1, object2};
Run Code Online (Sandbox Code Playgroud)

为什么这会被Java阻止?

我知道如何解决它,但有时会更简单.

例如:

public void selectedPointsToMove(cpVect coord) {

    if (tab == null) {
        if (arePointsClose(coord, point1, 10)) {
            cpVect[] tempTab = {point1};
            tab = tempTab;
        } else if (arePointsClose(point2, coord, 10)) {
            cpVect[] tempTab = {point2};
            tab = tempTab;
        } else {
            cpVect[] tempTab = {point1,point2};
            tab = tempTab;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个简单的问题一直困扰着我,因为我学会了如何在Java中使用数组.

java arrays

139
推荐指数
3
解决办法
25万
查看次数

Android对话框:删除标题栏

我有一个奇怪的行为,我无法确定其来源.

我的应用程序与经典

requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

删除标题/状态栏.

然后我创建一个对话框,允许用户输入信息(名称等)

使用物理键盘,没问题但是当我使用虚拟键盘时,我有一个奇怪的行为:

每当我按下虚拟键盘上的一个键时,标题/状态栏会再次出现,推动所有键盘布局再次消失(就像我启动应用程序时的动画一样)

这是一些代码:

        dialog = new Dialog(context);
        dialog.setContentView(R.layout.logindialog);
        dialog.setTitle("Login:");

        WindowManager.LayoutParams a = dialog.getWindow().getAttributes();

//      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

        a.dimAmount = 0;
        dialog.getWindow().setAttributes(a);

        dialog.setCancelable(true);
        dialog.getWindow().setLayout(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
Run Code Online (Sandbox Code Playgroud)

然后

dialog.show();
Run Code Online (Sandbox Code Playgroud)

我试过了

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

但它崩溃了我的应用程序.

这是xml

    <TextView android:id="@+id/LoginText"
        android:gravity="fill"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login:">
    </TextView>         
    <EditText android:id="@+id/LoginEdit"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="jason"
        android:layout_width="200sp"/>
    <TextView android:id="@+id/PasswordText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password:">
    </TextView>         
    <EditText android:id="@+id/PasswordEdit"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="welcome"
        android:layout_width="200sp"
        android:password="true"/>
<LinearLayout 
    android:id="@+id/test2"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<Button android:id="@+id/LoginButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Login" />
<Button android:id="@+id/CreateButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Create" />
<Button android:id="@+id/CancelLogin" …
Run Code Online (Sandbox Code Playgroud)

layout android dialog

106
推荐指数
4
解决办法
13万
查看次数

Java:迭代集合的最佳方式(此处为ArrayList)

今天,当我得到一段已经使用过数百次的代码时,我很乐意编写代码:

迭代集合(这里是ArrayList)

出于某种原因,我实际上看了Eclipse的自动完成选项,它让我想知道:

以下循环比其他循环更好用?

经典数组索引循环:

for (int i = 0; i < collection.length; i++) {
  type array_element = collection.get(index);
}
Run Code Online (Sandbox Code Playgroud)

Iterator hasNext()/ next():

for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
  type type = (type) iterator.next();   
}
Run Code Online (Sandbox Code Playgroud)

我最喜欢的,因为它写得如此简单:

for (iterable_type iterable_element : collection) {

}
Run Code Online (Sandbox Code Playgroud)

java collections for-loop

94
推荐指数
3
解决办法
23万
查看次数

ProgressDialog:如何防止泄漏窗口

我正在使用ProgressDialog来阻止用户在设备从互联网上下载时进行交互.

一切正常,直到我的客户设法产生这个错误:

"07-06 17:10:50.363: ERROR/WindowManager(8821): Activity android.pixelrain.framework.PixelRainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@463f3e50 that was originally added here
07-06 17:10:50.363: ERROR/WindowManager(8821): android.view.WindowLeaked: Activity android.pixelrain.framework.PixelRainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@463f3e50 that was originally added here
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.view.ViewRoot.<init>(ViewRoot.java:251)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.app.Dialog.show(Dialog.java:241)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.app.ProgressDialog.show(ProgressDialog.java:107)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.app.ProgressDialog.show(ProgressDialog.java:90)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.pixelrain.HTTPHelper.DraftHelper.getDraft(DraftHelper.java:70)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at android.pixelrain.online.OnlineRetriver.getDraft(OnlineRetriver.java:312)
07-06 17:10:50.363: ERROR/WindowManager(8821):     at …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks progressdialog

46
推荐指数
3
解决办法
6万
查看次数

Eclipse android项目总是在调试中发挥作用

我觉得愚蠢地问这个,甚至更傻也没有这个问题.我有一个Android项目,直到现在一直执行良好.

但是几天前,没有我做任何我所知道的事情,我的项目总是在调试中启动,无论我尝试什么(点击调试或运行给我相同的结果).我尝试查看项目设置和构建配置,但看不到任何证明这一点的理由.

所以现在我每次启动应用程序时都要转到调试选项卡并单击断开连接...

有任何想法吗

java eclipse android

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

动态资源加载Android

我正在尝试找到一种方法来打开名称仅在运行时确定的资源.

更具体地说,我希望有一个XML引用应用程序apk中的一堆其他XML文件.为了解释,让我们说主要的XML main.xml和其他XML是file1.xml,file2.xmlfileX.xml.我想要的是读取main.xml,提取我想要的XML的名称(fileX.xml例如),然后阅读fileX.xml.我面临的问题是我提取的形式main.xml是一个字符串,我找不到改变它的方法R.raw.nameOfTheFile.

有人有想法吗?

我不想:

  • 在一个巨大的XML文件中重新组合所有内容
  • 在一个巨大的交换机案例中硬编码main.xml,将数字/字符串链接到资源ID

android

33
推荐指数
3
解决办法
3万
查看次数

Android:视频观看:如何在循环播放视频

我有一个简单的对话框,里面有一个VideoView,我想循环播放视频.

我目前正在使用快速修复程序

 //Video Loop
        vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                vv.start();
            }
        });
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好的方法?


编辑

我正在添加更多代码,因为我不知道如何从以下形式访问MediaPlayer对象VideoView:

String path = defaultPath+currentVideoRessource;


    if (path == null || path.length() == 0) {
        Log.e("extra","File URL/path is empty");
    } else {
        // If the path has not changed, just start the media player
        if (!path.equals(current) && mVideoView != null) {
                Uri pathURI = Uri.parse(defaultPath+currentVideoRessource);
                mVideoView.setVideoURI(pathURI);
    }
    current = path;
    mVideoView.setOnCompletionListener(new MyOnCompletionListener(this));
    //Video Loop
    //              mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    //                  public …
Run Code Online (Sandbox Code Playgroud)

video android android-videoview

33
推荐指数
2
解决办法
4万
查看次数

Android:对话:我应该隐藏还是暗淡

我正在使用Dialog在我的应用程序中创建一些快速视图(如登录输入名称等)

而我正在徘徊更好的东西:隐藏或解雇.

我知道他们两个都做了但是我一直在徘徊,如果最好只是隐藏一个Dialog并在我需要时再次显示它,或者将它解散并重新创建它.

我的对话框很小,在我的代码中是非常静态的,因此我没有大量的实例.

所以有人可以给我使用hide而不是dismiss的优点和缺点.

贾森

android dialog

26
推荐指数
3
解决办法
2万
查看次数

Java:String:equalsIgnoreCase vs将所有内容切换为大写/小写

我注意到有几种方法可以比较Java中的字符串.

我很久以前习惯使用equalsIgnoreCase以避免出现区分大小写的字符串问题.

另一方面,其他人喜欢以大写或小写的方式传递所有内容.

从我的立场(即使技术上我坐着),我看不出真正的区别.

有人知道一种做法是否优于另一种做法?如果是这样,为什么?

java string string-comparison

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

Android VideoView:视频视图在对话框视图中更暗

大家好我在对话框视图中嵌入视频视图时遇到问题

一切正常,但对话框中显示的视频要深得多,如果在活动的其余部分显示

有任何想法吗 ?

这是一些代码

button1main.setOnClickListener(new OnClickListener() {

                public VideoView videoView = null;
                @Override
                public void onClick(View v) {
                    //set up dialog
                    Dialog dialog = new Dialog(CustomDialog.this);
                    dialog.setContentView(R.layout.maindialog);
                    //dialog.setTitle("This is my custom dialog box");
                    dialog.setCancelable(true);


                    this.videoView = (VideoView) dialog.findViewById(R.id.video);
                    VideoPlayer vp = new VideoPlayer(this.videoView, null);
                    vp.playVideo();

                    //set up button
                    Button button = (Button) dialog.findViewById(R.id.Button01);
                    button.setOnClickListener(new OnClickListener() {
                    @Override
                        public void onClick(View v) {
                            finish();
                        }
                    });
                    //now that the dialog is set up, it's time to show it    
                    dialog.show();
                } …
Run Code Online (Sandbox Code Playgroud)

android dialog android-videoview

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