当我的片段开始时,我希望我的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?
我可以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(),还有另一种方法来解决这个问题吗?
我有一个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从停止的位置恢复.
有没有办法限制从内容提供程序返回的行数?我找到了这个解决方案,然而,它对我不起作用.所有行仍在返回.
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) 我还在学习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的最佳方法是什么?
我有一个想要水平平铺的图像,我需要以编程方式完成.我尝试了两种方法,两种方法都不起作用.
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数组
我有一个HorizontalScrollView,它包含一个LinearLayout来保存我的所有视图.我添加了大约20个RelativeLayout,它包含一个ImageView和TextView到LinearLayout.我想只在ImageView在屏幕上时加载图像(当我滚动到ImageView时).
我尝试在缩略图上使用此帖子getHitRect(),但缩略图的Rect(边界)始终为0,0-0,0,导致我的方法返回false.我究竟做错了什么?
thumbnailLayout是HorizontalScrollView里面的LinearLayout
thumbnailScroll是我的HorizontalScrollView
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) 我正在使用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) 我有一个自定义对话框,当您单击对话框外部时,该对话框会消失,这是我不想要的.有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)的对话框调用此对话框.在调用此对话框之前,将关闭先前的对话框.
如何使用activity.managedQuery()限制返回的行数?
我很确定limitsqlite中没有函数.我也不想使用SQLiteDatabase.query(),因为我使用URI来获取查询.
android ×9
back-stack ×1
background ×1
build.gradle ×1
bundle ×1
chromecast ×1
cursor ×1
dialog ×1
google-cast ×1
gradle ×1
image ×1
limit ×1
performance ×1
sql ×1
sqlite ×1
uri ×1