小编Che*_*rra的帖子

RxJs捕获错误并继续

我有一个要解析的项目列表,但其中一个项目的解析可能会失败.

什么是"Rx-Way"来捕获错误但继续执行序列

代码示例:

var observable = Rx.Observable.from([0,1,2,3,4,5])
.map(
  function(value){
      if(value == 3){
        throw new Error("Value cannot be 3");
      }
    return value;
  });

observable.subscribe(
  function(value){
  console.log("onNext " + value);
  },
  function(error){
    console.log("Error: " + error.message);
  },
  function(){
    console.log("Completed!");
  });
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.0.6/rx.all.js"></script>
Run Code Online (Sandbox Code Playgroud)

我想以非Rx方式做什么:

var items = [0,1,2,3,4,5];

for (var item in items){
  try{
    if(item == 3){
      throw new Error("Value cannot be 3");
    }
    console.log(item);
  }catch(error){
     console.log("Error: " + error.message);
  }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

javascript rxjs reactivex

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

活动/片段转换是否与pre-Lollipop设备兼容?

我正在尝试使用前Lollipop设备(4.x)上的共享元素进行活动转换.可能吗?到目前为止,我正在尝试这个:

public class RewardDetail extends ActionBarActivity {
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        ...

        ViewCompat.setTransitionName(imageView, TRANSITION_NAME);
    }

    ...

    public static void launch(ActionBarActivity activity, View transitionView, WelcomeReward detailData) {
        ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, TRANSITION_NAME);
        Intent intent = new Intent(activity, RewardDetail.class);
        intent.putExtra(PARAM_DATA, detailData);
        ActivityCompat.startActivity(activity, intent, options.toBundle());
    }
}
Run Code Online (Sandbox Code Playgroud)

叫做:

@Override
public void onClick(final View v) {
    int position = recyclerView.getChildPosition(v);
    WelcomeReward welcomeReward = data.get(position);
    RewardDetail.launch(WelcomeRewardActivity.this, v.findViewById(R.id.reward_view), welcomeReward);
}
Run Code Online (Sandbox Code Playgroud)

但它导致"常规"转换(没有共享元素).有任何想法吗?

编辑

根据这段视频,可以做到:

https://www.youtube.com/watch?v=RhiPJByIMrM&index=8&list=WL

是否有一个图书馆已经为棒棒糖前实现了这个?

java android material-design activity-transition shared-element-transition

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

Android Gradle javadoc注释不存在

我正在尝试建立一个在jcenter上发布的aar.

assembleRelease任务正常,javadoc任务也可正常工作,但javadocJar任务输出此错误:

/Users/martinmoreno/Projects/android-dev-utils/dev-utils/src/main/java/com/tinchoapps/devutils/BitmapUtils.java:11:错误:包android.support.annotation不存在
import android.support .annotation.NonNull;

这是(简化的)gradle文件:

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'


android {
    ...
    buildTypes {
        release {
            minifyEnabled false
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debug
        }
    }
...
}

...

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-annotations:20.0.0'
    compile 'com.android.support:support-v4:22.0.0'
}

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    destinationDir = file("../javadoc/")
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from …
Run Code Online (Sandbox Code Playgroud)

android javadoc android-gradle-plugin

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

Android Studio 1.0构建太慢了

我已经将Android Studio从0.9x更新到1.0 RC(1和2),我的项目构建时间从20秒增加到大约90秒.

任何人都有同样的问题?

UPDATE

在终端上运行相同的任务,我看到"解决依赖关系"步骤占用了大部分额外时间.

更新2

感谢@bond,我注意到脱机会将构建时间缩短到大约30秒,所以我尝试在build.gradle上使用mavenLocal(),但也没有运气.

顶级build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenLocal()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio

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

WebView OverScroll

我想在滚动达到最大值后拉动webView"反弹"(类似于"拉动 - 刷新"效果).

我有自定义视图扩展WebView,并覆盖该方法

 @Override
protected boolean overScrollBy(final int deltaX, final int deltaY, final int scrollX, final int scrollY, final int scrollRangeX, final int scrollRangeY, final int maxOverScrollX, final int maxOverScrollY, final boolean isTouchEvent)
{
    VerticalOverScrollController.Result result = overscrollController.calcVerticalOverScroll(deltaY, scrollY);
    Log.d("overScrollBy", "scrollY " + result.scrollY + " overScrollY " + result.overScrollY);

    return super.overScrollBy(deltaX, deltaY, scrollX, result.getScrollY(), scrollRangeX, scrollRangeY, maxOverScrollX, result.getOverScrollY(), isTouchEvent);
}
Run Code Online (Sandbox Code Playgroud)

calcVerticalOverScroll

 public Result calcVerticalOverScroll(final int deltaY, final int scrollY)
{
    Result result = new Result();

    if …
Run Code Online (Sandbox Code Playgroud)

android webview overscroll

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

FragmentStatePagerAdapter onPageSelected事件

我有一个FragmentStatePagerAdapter,里面有6个片段.

每个Fragment连接到服务器并加载数据.

现在,服务器连接正在Fragment.onStart()中完成,这意味着在任何时候,我都有3个http请求(选定的片段,每侧一个).

我想要的是当时只有一个连接,所以我打算使用

 viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
 { 
    @Override
    public void onPageSelected(final int position)
    {
        CustomFragment fragment = (CustomFragment) myFragmentStatePagerAdapter.getItem(position);

        fragment.onSelected();//do stuff in here
    }
 });
Run Code Online (Sandbox Code Playgroud)

问题是,getItem()返回片段的新实例,尚未添加到管理器(因此,尚未创建视图等).

此外,我已经尝试setUserVisibleHint(boolean isVisibleToUser)但是没有被调用可见,只有isVisibleToUser = false

那么,如何为Fragment实现"onPageSelected()"事件呢?

提前致谢

android android-fragments android-viewpager

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

SeekBar Thumb位置问题

我正试图为我的Seekbar做一个"贴上标签"的拇指.目标是每次Seekbar位置更改时自定义拇指上方的文本.

我这样做:

        ...
        seekBar = (SeekBar) findViewById(R.id.bet_seek_bar);
        seekBar.setMax(10);
        setSeekBarLabel("0");
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar)
            {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar)
            {

            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
            {
                setSeekBarLabel(String.valueOf(progress));
            }
        });
    }

    private void setSeekBarLabel(String text)
    {
        BitmapDrawable thumb = Utils.writeOnBitmap(thumbBmp, text, 0, 0, thumbLablePaint);
        seekBar.setThumb(thumb);
    }
Run Code Online (Sandbox Code Playgroud)

运行后,触摸栏,我得到了这个:

截图

我现在不关心任何文本问题(不写一个,门廊等).

我关心拇指相对于酒吧进度的位置.

拇指位置应该是绿色条结束的位置.我错过了什么?

问候.

user-interface android seekbar

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

ProviderTestCase2.getProvider()为null

我正在尝试测试ContentProvider类,但无法使其工作.

getProvider()继续返回null,但正如我从ProviderTestCase2.setUp()代码中理解的那样,它不应该.

public class NotesProviderTest extends ProviderTestCase2<NotesProvider>
{
    ...

    public NotesProviderTest()
    {
        super(NotesProvider.class, Contract.AUTHORITY);
    }

    @Override
    protected void setUp() throws Exception
    {
        super.setUp();

    }

    public void testNoteProvider__inserts_a_valid_record() throws Exception
    {
        Note note = new Note(new JSONObject(simpleNoteJson));

        NotesProvider provider = getProvider();

        Uri insert = provider.insert(Note.URI, note.getContentValues());
        assertEquals(1L, ContentUris.parseId(insert));

        Cursor cursor = provider.query(Note.URI, null, null, new String[]{}, null);

        assertNotNull(cursor);

        cursor.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

附注:如果在应用程序中使用,提供程序可以正常工作

提前致谢.

android unit-testing android-contentprovider

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

Android inter-Activity生命周期

根据Android文档,活动生命周期如下:

  • 的onCreate()
  • 在onStart()
  • 的onResume()
  • 的onPause()
  • 的onStop()
  • 的onDestroy()

问题是,假设我有两个活动(A和B)并且它们没有被异常杀死(内存不足等):

当一个人进入后台而另一个人被恢复/创建时,执行顺序如何?

  • ...
  • A.onPause()
  • B.onCreate()
  • A.onStop() - 同时B.onStart()
  • B.onResume()
  • ...

这种保证适用于任何特定订单吗?在每个Android版本?

Regads

lifecycle android android-activity

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