小编DMC*_*DMC的帖子

使用按钮选择器禁用按钮

我有一个按钮选择器,可以在按下按钮时更改按钮图像.我还为按钮被禁用时设置了图像.我尝试以编程方式禁用按钮,但禁用的按钮图像没有出现.我的button_selector是否正确?

<item android:drawable="@drawable/red_btn_bg_disabled" android:state_enabled="false"/> <!-- disabled -->

<item android:drawable="@drawable/red_btn_bg_pressed" android:state_pressed="true"/> <!-- pressed -->
<item android:drawable="@drawable/red_btn_bg_pressed" android:state_focused="true"/> <!-- focused -->

<item android:drawable="@drawable/red_btn_bg"/> <!-- default -->
Run Code Online (Sandbox Code Playgroud)

我在我的代码中使用mButton.setEnabled(false)来禁用该按钮

android android-button android-selector

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

切换标签时,片段有时会重叠

我有一个双窗格布局,左边是我的按钮.按下按钮时,右侧会显示相应的片段.有时碎片会重叠,但这是一个间歇性的问题.我无法一直复制它,但它确实发生了

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.imageButtonSettingsManageBooks:
        SettingsManageBooksFragment mbFragment = new SettingsManageBooksFragment();
        getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, mbFragment).addToBackStack(null).commit();
        mImgFragmentTitle.setImageResource(R.drawable.manage_my_books);
        this.getSupportFragmentManager().executePendingTransactions();


        break;
    case R.id.imageButtonSettingsPurchaseHistory:
        SettingsPurchaseHistoryFragment phFragment = new SettingsPurchaseHistoryFragment();
        getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, phFragment).commit();
        mImgFragmentTitle.setImageResource(R.drawable.purchase_history);
        this.getSupportFragmentManager().executePendingTransactions();

        break;
    case R.id.imageButtonSettingsAudio:
        SettingsAudioFragment aFragment = new SettingsAudioFragment();
        getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, aFragment).commit();
        mImgFragmentTitle.setImageResource(R.drawable.audio);
        this.getSupportFragmentManager().executePendingTransactions();

        break;
    case R.id.imageButtonSettingsRestore:
        SettingsRestoreFragment rFragment = new SettingsRestoreFragment();
        getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, rFragment).commit();
        mImgFragmentTitle.setImageResource(R.drawable.restore);
        this.getSupportFragmentManager().executePendingTransactions();

        break;
    case R.id.imageButtonSettingsCopyright:
        SettingsCopyrightFragment cFragment = new SettingsCopyrightFragment();
        getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, cFragment).commit();
        mImgFragmentTitle.setImageResource(R.drawable.copyright);
        this.getSupportFragmentManager().executePendingTransactions();

        break;
    case R.id.imageButtonSettingsAbout:
        SettingsAboutFragment abFragment = new SettingsAboutFragment();
        getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, abFragment).commit();
        mImgFragmentTitle.setImageResource(R.drawable.about);
        this.getSupportFragmentManager().executePendingTransactions(); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-fragmentactivity

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

在Android中查看PDF文件

我正在开发一个应用程序,其中一个按钮在按下时显示PDF文件.

显示此PDF文件的最佳方式是什么?

我可以通过将其复制到SD卡并使用已安装在设备上的adobe通过意图启动它来查看它.

但是我不能假设每个设备都安装了adobe,那么我的替代选择是什么?

我能将它转换成图像并以这种方式显示吗?

pdf android

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

在android中创建自定义后退按钮

我有一个具有菜单的应用程序,根据您在菜单中按下的按钮,将打开一个新活动.我想在每个屏幕上都有一个后退按钮,可以将您带到上一个屏幕,所以我想知道我该如何解决这个问题?

以下是我使用的一些代码:

backButton = (ImageButton) findViewById(R.id.back_button);
        backButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {


                finish();

            }
        });
Run Code Online (Sandbox Code Playgroud)

然而,对于我来说,将此代码放在我的所有活动中并不是一个好的编程习惯.我如何创建某种堆栈来保存所有查看的页面并使用它来返回上一页?

我必须在我的应用程序中放置一个后退按钮,因此我无法使用ActionBar中的现有按钮.

android android-ui android-button

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

Android Studio Gradle Error - preDexDebug

我最近在我的android studio项目中添加了一个新活动,现在我在尝试运行它时遇到错误.它构建正常但我在运行它时得到以下错误:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /Applications/Android Studio.app/sdk/build-tools/android-4.4W/dx --dex --output /Users/davidcavanagh/joshcpdandroid/app/build/intermediates/pre-dexed/debug/classes-22ecb8c50fefe43948d87c9fee8e36a6b7d1bb5a.jar /Users/davidcavanagh/joshcpdandroid/app/build/intermediates/exploded-aar/com.android.support/support-v4/20.0.0/classes.jar
  Error Code:
    1
Run Code Online (Sandbox Code Playgroud)

这是我的build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion '20.0.0'

    defaultConfig {
        applicationId "com.joshcpd.android"
        minSdkVersion 15
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:5.2.08'
    compile 'com.android.support:appcompat-v7:20.0.0'
    compile project(':libraries:zbar') …
Run Code Online (Sandbox Code Playgroud)

android android-studio build.gradle android-gradle-plugin

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

如何从res/raw文件夹中打开PDF文件?

我正在编写一个应用程序,当您单击按钮时打开pdf文件.以下是我的代码:

File pdfFile = new File(
                        "android.resource://com.dave.pdfviewer/"
                                + R.raw.userguide);
                Uri path = Uri.fromFile(pdfFile);
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setDataAndType(path, "application/pdf");

                startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它并按下按钮时,它显示"文档无法打开,因为它不是有效的PDF文档".这让我很生气.我是否正确访问了该文件?有任何想法吗?谢谢

pdf android android-intent android-resources

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

如何获得SeekBar进度的高度

我在我的应用程序中定义了一个SeekBar,如下所示:

 <SeekBar
    android:id="@+id/seekbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

我想在它旁边放置一个与SeekBar高度相同的图像.我需要以编程方式设置图像的高度,以便它在所有设备上保持不变.但是我无法获得SeekBar的高度.

下面的代码返回视图的高度而不是SeekBar.

 mReadingSeekBar = (ReadingSeekBar) findViewById(R.id.seekbar);
 mBarHeight = mReadingSeekBar.getHeight();
Run Code Online (Sandbox Code Playgroud)

而且这段代码也不起作用.它只返回0:

mBarHeight = mReadingSeekBar.getProgressDrawable().getMinimumHeight();
Run Code Online (Sandbox Code Playgroud)

有没有办法找到SeekBar的实际大小而不仅仅是视图大小?

android android-seek

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

理解for循环和条件

以下是我无法理解的代码.输出为13 15 x = 6.我理解我们如何获得数字13因为当我们经历循环时,x的值是5并且其对应的y值是12.因此,如果x> 4,则我们增加y,这给出了值为13.下一个打印的数字out然后应该是14因为x的下一个值是6并且它的相应y值是13所以当你增加它时它将是14.但是当我运行代码时它给出了不同的答案.有人可以帮忙吗?谢谢

public class Output {
  public static void main(String[] args) {
    Output o = new Output();
    o.go();
  }


  void go() {
    int y = 7;
    for (int x = 1; x < 8; x++) {
        y++;
        if (x > 4) {
            System.out.print(++y + " ");
        }
        if (y > 14) {
            System.out.println(" x = " + x);
            break;
        }
    }
  }
}  ? 
Run Code Online (Sandbox Code Playgroud)

java for-loop

0
推荐指数
1
解决办法
156
查看次数

使用时间戳保存文件

我试图使用时间戳作为名称保存文件.我自己命名时可以保存文件没问题但是当我尝试使用时间戳时它不起作用.这是我的代码:

        Long tsLong = System.currentTimeMillis()/1000;
        String ts = tsLong.toString();

        File newxmlfile = new File(Environment.getExternalStorageDirectory()
                 + ts);
        try {
            newxmlfile.createNewFile();
        } catch (IOException e) {
            Log.e("IOException", "exception in createNewFile() method");
        }

        FileOutputStream fileos = null;
        try {
            fileos = new FileOutputStream(newxmlfile);
        } catch (FileNotFoundException e) {
            Log.e("FileNotFoundException", "can't create FileOutputStream");
        }
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

编辑(已解决):我更改了下面的行,并使用时间戳作为xml文件保存文件.

File newxmlfile = new File(Environment.getExternalStorageDirectory()
                 ,ts + ".xml");
Run Code Online (Sandbox Code Playgroud)

android timestamp

0
推荐指数
1
解决办法
906
查看次数