小编bvi*_*iyg的帖子

如何从片段本身替换活动的片段?

我的应用程序在其Activity中有一个Fragment.我想以编程方式从当前片段本身替换另一个片段.

例如,如果我单击片段内的按钮,则片段应替换为另一个片段,但活动应保持不变.

可能吗?如果是这样,怎么办?

android android-fragments

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

将项目分组到CardView的最佳做法是什么?

CardView通常用于装饰一个元素.但有时你需要将几个项目包装到这个小部件中.例如,在收件箱应用程序中.

在此输入图像描述

那么最好的方法是什么?它可以通过自定义LayoutManager甚至自定义ItemDecoration来实现.自定义LayoutManager的实现不是一件容易的事(完全支持动画,项目装饰等).在第二个选项中,必须手动实现边界的绘制,忽略CardView(和Android-L提升)实现.

android android-cardview android-recyclerview

36
推荐指数
1
解决办法
4313
查看次数

如何扩展Java注释?

在我的项目中,我使用预定义的注释@With:

@With(Secure.class)
public class Test { //....
Run Code Online (Sandbox Code Playgroud)

源代码@With:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface With { 

    Class<?>[] value() default {};
}
Run Code Online (Sandbox Code Playgroud)

我想编写自定义注释@Secure,其效果与之相同@With(Secure.class).怎么做?


如果我这样喜欢怎么办?它会起作用吗?

@With(Secure.class)
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Secure {

}
Run Code Online (Sandbox Code Playgroud)

java annotations

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

适用于Android的Google Play音乐API

我正在开发Android的音乐应用程序.我需要两件事:

  • 获取艺术家专辑封面,专辑名称,曲目名称等;
  • 打开Goog​​le Play页面购买此相册.

首先我正在使用iTunes API - 但这对真正的Android开发者来说并不是爱国的.如果Google Play音乐有类似的服务,我宁愿使用它.它存在吗?

第二个怎么样?我可以使用此代码根据我的查询显示所有搜索结果:

Intent intent = new Intent(Intent.ACTION_VIEW)
                             .setData(Uri.parse("market://search?q=<My Query>"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

但我想准确地显示专辑或跟踪购买页面.Google Play可以使用吗?

android google-play-services

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

ViewDragHelper:如何使用它?

在Google IO 2013中,Google宣布推出支持库的新版本,其中包括ViewDragHelper课程.我看到了文档,但是我找不到这个类的任何使用示例.

例如,一个非常典型的情况:我有一个自定义视图,它从内部延伸FrameLayout并允许拖动其中的一些View内容.例如,让它成为一个Button.我覆盖onTouchEvent()onInterceptTouchEvent()在我的自定义视图中,如果rect的按钮包含触摸坐标,这不是一个简单的点击,那么我开始拖动.

那么,我必须做些什么ViewDragHelper呢?Button应点击应该正确处理.

android slide drag

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

onCreateOptionsMenu()在Fragment中调用两次

我有一个带有选项菜单的简单应用程序,它在片段的开头变化.问题是,在开始时除了第一个onCreateOptionsMenu()之外的任何片段都会被调用两次 - 在onCreate()和onResume()之后.在onCreate()中我通过setHasOptionsMenu(true)手动调用它,但是在onResume()之后它不应该发生.此外,这仅在第一个片段开始后发生.

这是基本片段代码:

class BaseFragment extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle clicks
        return true;
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // Create a menu
        super.onCreateOptionsMenu(menu, inflater);
    }
}
Run Code Online (Sandbox Code Playgroud)

并在Activity中更改片段代码:

public void startFragment(BaseFragment fragment) {
    getSupportFragmentManager()
    .beginTransaction()
    .replace(android.R.id.content, fragment)
    .commit();
}
Run Code Online (Sandbox Code Playgroud)

该示例不使用任何外部库,如ActionBarSherlock,只使用SupportLibrary.我想,问题出在FragmentTransaction的replace()方法中,因为它在第一个片段启动时工作正常.但我不知道,从哪里开始解决问题.我需要在View中完全替换片段.

android-fragments android-optionsmenu

11
推荐指数
3
解决办法
7977
查看次数

如何使用Gradle将Froyo的Google Play服务添加到项目中?

来自Google Developers Portal的信息:

  1. 打开应用程序目录中的build.gradle文件.
  2. 在依赖项下为最新版本的play-services添加新的构建规则.例如:
apply plugin: 'android'
...

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.30'
}
Run Code Online (Sandbox Code Playgroud)

但这是标准Google Play服务的说明.Froyo的Google Play服务是一个不同的模块.我从未与Gradle合作 - 我需要做些什么来为Froyo添加Google Play服务?

gradle google-play-services

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

Google何时会发布ActionBarCompat?

在谷歌I/O 2013上,谷歌宣布了ActionBarCompat库.知道是否发布日期?或者可能已经发布了?

android-actionbar-compat

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

为什么NotificationManager在更新过程中运行得如此之慢?

我通过NotificationManager发布文件上传进度,但在更新其进度时,用户界面冻结.

我使用NotificationCompat.Builder,它在类字段中缓存.因此,进度发布非常简单:

manager.notify(id, uploader.
    setProgress(MAX_PROGRESS, (int) (progress * 100), false).
    build()
);
Run Code Online (Sandbox Code Playgroud)

保证更新进度从主线程执行(包装在Handler装饰器中).

this.request.setCallback(new UploaderDecorator(this.request.getCallback()));
Run Code Online (Sandbox Code Playgroud)

进展情况如下:

long total = file.length();
long uploaded = 0;
int bytesRead = input.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
    output.write(buffer, 0, bufferSize);
    uploaded += bytesRead;
    callback.onUploadProgress(activeFile, ((float) uploaded / total));
    bytesRead = input.read(buffer, 0, bufferSize);
}
Run Code Online (Sandbox Code Playgroud)

那为什么它的工作如此之慢?

android android-notifications

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

通过Facebook Android应用程序授权,无需Facebook SDK

我需要在我的应用程序中实现导入Facebook联系人.所有,我需要的 - 得到Facebook好友列表.

我可以使用适用于Android的官方SDK,但对于像这样的简单任务来说,它太大而且太重.我可以手动构建和发送请求,这很容易.我也可以access_token在WebView中使用oAuth Facebook授权.

但我想为用户添加一些便利.Facebook Android SDK支持通过Facebook Android App获取令牌.我想,这种机制在两个进程之间使用IntentonActivityResult传输数据.因此,在这种情况下,我可以构建相同的Intent并将其发送到Facebook处理access_token.

当然,他们可以使用任何其他机制在进程之间传输数据,但它仍然必须是一种模拟Facebook Android SDK的令牌请求的方法.那么如何模拟呢?

android facebook facebook-android-sdk

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