小编hee*_*ero的帖子

片段启动时显示edittext的键盘

当我的片段开始时,我希望我的edittext成为焦点/让用户开始输入它.我能够通过requestFocus()获得焦点,但我无法让键盘显示出来.

我试过这两个:

edit = (EditText) view.findViewById(R.id.search);
edit.requestFocus();
InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imgr.showSoftInput(edit, 0);
Run Code Online (Sandbox Code Playgroud)

edit = (EditText) view.findViewById(R.id.search);
InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imgr.showSoftInput(edit, 0);
edit.requestFocus();
Run Code Online (Sandbox Code Playgroud)

如何让键盘显示EditText?

android android-softkeyboard android-edittext

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

从后台堆栈恢复片段时的savedInstanceState

我可以savedInstanceState()在删除片段时使用保存状态,然后在从后端堆栈弹出片段时恢复状态吗?当我从后台堆栈恢复片段时,savedInstanceState包始终为null.

现在,app流程是:创建片段 - >删除片段(添加到后台堆栈) - >从后台堆栈恢复的片段(savedInstanceState bundle为null).

这是相关代码:

public void onActivityCreated(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = getArguments();
    Long playlistId = bundle.getLong(Constants.PLAYLIST_ID);
    int playlistItemId = bundle.getInt(Constants.PLAYLISTITEM_ID);

    if (savedInstanceState == null) {
       selectedVideoNumber = playlistItemId;
    } else {
       selectedVideoNumber = savedInstanceState.getInt("SELECTED_VIDEO");
    }
}

public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(Constants.SELECTED_VIDEO, selectedVideoNumber);
    }
Run Code Online (Sandbox Code Playgroud)

我认为问题是onSavedInstanceState()当被删除并被添加到后台堆栈时永远不会被调用.如果我不能使用onsavedInstanceState(),还有另一种方法来解决这个问题吗?

android bundle android-fragments back-stack

36
推荐指数
2
解决办法
6万
查看次数

继续从onResume播放VideoView

我有一个VideoView,当我启动电子邮件意图时,它会暂停.电子邮件意图完成后,我希望videoView继续播放,但是,它从头开始重新启动.

@Override
public void onPause() {
    Log.d(TAG, "onPause called");
    super.onPause();
    videoView.pause();
}
@Override
public void onResume() {
    super.onResume();
    Log.d(TAG, "onResume called");
    videoView.start();//resume() doesnt work
}
Run Code Online (Sandbox Code Playgroud)

如何让videoView从停止的位置恢复.

android android-videoview

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

如何使用内容提供程序添加限制子句

有没有办法限制从内容提供程序返回的行数?我找到了这个解决方案,然而,它对我不起作用.所有行仍在返回.

Uri uri = Playlists.createIdUri(playlistId); //generates URI
uri = uri.buildUpon().appendQueryParameter("limit", "3").build();     
Cursor cursor = activity.managedQuery(playlistUri, null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

android uri limit android-contentprovider

14
推荐指数
1
解决办法
9284
查看次数

多个Android应用程序取决于带有gradle的android库

我还在学习gradle,但从我读过的内容来看,我想知道这是否可行.

我有多个Android应用程序(app1,app2,app3),这取决于一个Android库(L).android库(L)将依赖于像volley这样的外部库,而应用程序将依赖于像picasso这样的外部库.

我不希望每个应用程序的多个库和齐射副本.这就是我认为我的文件夹/ gradle结构的样子:

app1/
  settings.gradle
  build.gradle
  src/
    com/
    test/
app2/
app3/
library/
  settings.gradle
  build.gradle
  src/
    com/
    test/
external/
  volley/
  picasso/
Run Code Online (Sandbox Code Playgroud)

但我不确定app1的build.gradle文件会是什么样子,因为项目依赖项(库)似乎需要在app1文件夹中.

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.5+'
    }
}

apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
    compile project(':library')
}

android {
    buildToolsVersion "17.0"
    compileSdkVersion 18

     sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aild.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')
    }
} 
Run Code Online (Sandbox Code Playgroud)

对我来说构建项目使用gradle的最佳方法是什么?

android gradle build.gradle android-gradle-plugin

9
推荐指数
1
解决办法
3872
查看次数

Android以编程方式平铺图像作为背景

我有一个想要水平平铺的图像,我需要以编程方式完成.我尝试了两种方法,两种方法都不起作用.

button_inner_shadow是图像navigation_background是用于平铺上面图像的xml

1:直接平铺图像

BitmapDrawable navigationBackground = new BitmapDrawable(BitmapFactory.decodeResource(
                getResources(), R.drawable.button_inner_shadow));
navigationBackground.setTileModeX(Shader.TileMode.REPEAT);
navigationTextViews[id].setBackgroundDrawable(navigationBackground);
Run Code Online (Sandbox Code Playgroud)

2:使用xml来平铺图像

navigationBackground = new BitmapDrawable(BitmapFactory.decodeResource(
                getResources(), R.drawable.navigation_background));
navigationTextViews[id].setBackgroundDrawable(navigationBackground);
Run Code Online (Sandbox Code Playgroud)

navigation_background

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither="true"
    android:src="@drawable/button_inner_shadow"
    android:tileMode="repeat" />
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我还setBackgroundResource用来设置改变程序另一部分的背景颜色,并认为这是一个问题.我添加了navigationTextViews[id].setBackgroundResource(0);,它应该删除后台资源,这不适用于我使用的上述解决方案.

编辑:navigationTextViews []是一个TextViews数组

android background image

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

Android仅下载horizo​​ntalScrollView中可见的图像

我有一个Horizo​​ntalScrollView,它包含一个LinearLayout来保存我的所有视图.我添加了大约20个RelativeLayout,它包含一个ImageView和TextView到LinearLayout.我想只在ImageView在屏幕上时加载图像(当我滚动到ImageView时).

我尝试在缩略图上使用此帖子getHitRect(),但缩略图的Rect(边界)始终为0,0-0,0,导致我的方法返回false.我究竟做错了什么?

thumbnailLayout是Horizo​​ntalScrollView里面的LinearLayout
thumbnailScroll是我的Horizo​​ntalScrollView

runOnUiThread(new Runnable() {

    @Override
    public void run() {
           Log.e(TAG, "running");
           for (int i = 0; i < thumbnailLayout.getChildCount(); i++) {
                RelativeLayout view = (RelativeLayout) thumbnailLayout.getChildAt(i);
                ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
                if (thumbnailIsOnScreen(thumbnail)) {
                    Log.e(TAG, items.get(i).getTitle() + " has downloaded");
                    app.setImage(items.get(i).getThumbnailSmall(), thumbnail);
                }
           }


       }
   });

private boolean thumbnailIsOnScreen(ImageView thumbnail) {
        Rect bounds = new Rect();
        thumbnail.getHitRect(bounds);

        Rect scrollBounds = new Rect(thumbnailScroll.getScrollX(), thumbnailScroll.getScrollY(),
                thumbnailScroll.getScrollX() + thumbnailScroll.getWidth(), thumbnailScroll.getScrollY()
                        + thumbnailScroll.getHeight());
        return Rect.intersects(scrollBounds, bounds); …
Run Code Online (Sandbox Code Playgroud)

performance android horizontalscrollview

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

如何在MinimalMediaRouteProvider中更新音量条

我正在使用registerMediaRouteProvider,它为您提供了一个音量条来更新电视的音量.我实现了MediaRouteAdapter,当我擦洗音量条时,音量发生变化,但音量条的ui总是重置为0.当音量改变时,如何更新音量条的ui?

@Override
public void onCreate(Bundle savedInstanceState) {

  mCastContext = new CastContext(getApplicationContext());
  MediaRouteHelper.registerMinimalMediaRouteProvider(mCastContext, this);
  mMediaRouter = MediaRouter.getInstance(getApplicationContext());
  mMediaRouteSelector = MediaRouteHelper.buildMediaRouteSelector(MediaRouteHelper.CATEGORY_CAST);
  mMetaData = new ContentMetadata();

  mMediaRouterCallback = new MyMediaRouterCallback();
  mMediaRouteButton.setRouteSelector(mMediaRouteSelector);
}

private class MyMediaRouterCallback extends MediaRouter.Callback {
    @Override
    public void onRouteSelected(MediaRouter router, RouteInfo route) {
        MediaRouteHelper.requestCastDeviceForRoute(route);
    }

    @Override
    public void onRouteUnselected(MediaRouter router, RouteInfo route) {
        try {
            if (mSession != null) {
                Log.e(TAG, "Ending session and stopping application");
                mSession.setStopApplicationWhenEnding(true);
                mSession.endSession();
            } else {
                Log.e(TAG, "onRouteUnselected: mSession is null"); …
Run Code Online (Sandbox Code Playgroud)

google-cast chromecast

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

当我在其外部点击时,自定义对话框将被解除

我有一个自定义对话框,当您单击对话框外部时,该对话框会消失,这是我不想要的.有dialog.setCanceledOnTouchOutside(false);没有解决问题.我究竟做错了什么?

dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCanceledOnTouchOutside(false);
dialog.setContentView(R.layout.twitter_dialog);
// set up edit text and other widgets
dialog.getWindow().setLayout(450, 280);
dialog.show();
Run Code Online (Sandbox Code Playgroud)

编辑:我从另一个具有setCanceledOnTouchOutside(true)的对话框调用此对话框.在调用此对话框之前,将关闭先前的对话框.

android dialog

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

限制从sqlite返回的行数

如何使用activity.managedQuery()限制返回的行数?

我很确定limitsqlite中没有函数.我也不想使用SQLiteDatabase.query(),因为我使用URI来获取查询.

sql sqlite android cursor

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