Tag: android

如何在Android应用程序中打开Youtubevideo链接?

我的问题与其他有关如何打开YouTube链接的问题不相似。 我的问题是如何打开一个YouTube链接,然后当它在应用程序中打开时,它应该关闭YouTube应用程序,并再次打电话给我的MainActivity打开YouTube应用程序。 然而,它应该从scrath打开YouTube应用程序,而不是只显示在后台运行的以前的YouTube活动。 MainAcitivy – > SecondActivity – > Youtube – > ThirdActivity – > Youtube 但我希望YouTube应用程序从头开始重新加载。 但目前,我正在获取之前在后台打开的YouTube应用程序。 主要活动 Intent intent = new Intent(MainActivity.this,ThirdActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); SecondActivity startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(link))); sleep(10000); Intent intent=new Intent(getApplicationContext(),ThirdActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); ThirdActivity sleep(5000); Toast.makeText(getApplicationContext(),”third”,Toast.LENGTH_SHORT).show(); Intent intent=new Intent(getApplicationContext(),SecondActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); 我想每次都从头开始加载它,但是它向我显示了暂停的状态。 如果你不明白我的问题,请自由发表评论,我会尽力详细说明。 […]

RxJava推迟了可观察到的火灾

我有一个使用RxJava observables设置的事件序列。 基本上,我使用observable.delay(time, timeUnit, scheduler)函数合并了由Observable.just(Events.*)创建的不同延迟创建的不同事件。 然后将它们发布到PublishSubject (下面的代码中的events )并订阅该PublishSubject以观察下面的代码中的序列( observeEvents()函数)。 它曾经工作得很好,但最近我在我的设备上看到了一个非常奇怪的行为(OnePlus One与android 5.0.2)(并没有在模拟器上看到它)。 基本上事件会混淆起来,延迟较高的事件可能会在延迟较小的事件之前发生,延迟较小的事件可能会发生在队列的末尾,有时候所有的事件都会以正确的顺序出现。 前三个赛事经常混合在一起。 有时候根本没有观察到一些事件。 这里会发生什么? 代码在Kotlin: var computationScheduler = Schedulers.computation() private val events: PublishSubject = PublishSubject.create() private val userActionSubject: PublishSubject = PublishSubject.create() Observable.merge( event0(), event1(), event2(), userActionOrEvent3(), userActionOrEvent4()) .subscribe({ // Weird timings are observed here already events.onNext(it) }, { e -> events.onError(e) })) private […]

Recycler中的checkbox勾选为true时,查看项目被immedietaly选中为false

我使用RxJava2,Kotlin和Room作为例子。 以下是将我的项目填充到recyclerView的适配器: class ShoppingListDetailsAdapter(val list: ArrayList, val context: Context, val listener: ShoppingItemCheckboxListener, val isArchived: Boolean) : RecyclerView.Adapter() { override fun getItemCount(): Int { return list.count() } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val itemView = LayoutInflater.from(parent?.getContext()) .inflate(R.layout.item_shopping_list_element, parent, false) return ViewHolder(itemView) } override fun onBindViewHolder(holder: ViewHolder?, position: Int) { val item = list.get(position) […]

导航抽屉:从左边缓慢滑动时,停止拖动菜单

如果我从左边快速滑动,这不会发生。 但是,如果我从左边缓慢滑动,经常(但不是总是)拖动停止,并且抽屉菜单不响应进一步的滑动。 我曾尝试使用其他Google应用,例如Google图书,Google地图或Play商店,但他们没有这个问题。 起初,我以为我做错了什么。 但是我创建了一个新的项目,并选择了主要的活动types作为“导航抽屉活动”,并重现了这个问题。 除了更改SDK /工具/库版本之外,我没有修改生成的项目。 我怎么解决这个问题? 我没有附加源代码,因为它是在Android Studio中复制的模板项目。 以下是我的版本/配置。 Android Studio 3.0.1 科特林 编译SDK 27 目标SDK 27 构建工具27.0.3 支持版本“27. +”

call.enqueue正在阻塞第一个请求

我在Kotlin编写的Android应用程序中使用Retrofit 2来调用API。 我的电话如下所示: val time = measureTimeMillis { val call = geocodingApi.searchByName(“Berlin”) call.enqueue(object : Callback { override fun onResponse(call: Call?, response: Response?) { // some code } override fun onFailure(call: Call?, t: Throwable?) { // some code } }) } Timber.d(“searching by name took $time ms”) geocodingApi在我的类的构造函数中初始化如下: val loggingInterceptor = HttpLoggingInterceptor(HttpLoggingInterceptor.Logger { Timber.d(it) }) loggingInterceptor.level […]

如何正确更新ViewPager的最后一个片段,当点击标签?

问题描述: 我有一个ViewPager有四个碎片, 第一个和最后一个对他们有一个RecyclerView; 当我滚动ViewPager时,一切正常 – 这意味着,所有内容按预期加载; 如果我点击最后/第一个选项卡(其中包含RecyclerViews,并由三个片段分隔),RecyclerView内容不显示在屏幕上 – 所有其他UI组件,如FloatingActionButtons; 我环顾四周,但与此主题相关的所有其他问题似乎只解决了滚动的问题,我无法find任何与特定点击标签相关的任何内容。 PS:代码写在Kotlin 码 从一个活动调用,以封装与标签管理器相关的代码: class TabManager { companion object { val INVALID_POSITION_LABEL = “Invalid Position” } private var mActivity: AppCompatActivity? = null private var mViewPagerTab: SmartTabLayout? = null private var mViewPager: ViewPager? = null // PUBLIC INTERFACE ============================================================================ fun initViewPager(activity: AppCompatActivity) { mActivity = activity mViewPager […]

SearchView不会在第二个点上调用onQueryTextChange

我的活动有SearchView,应该过滤查询。 我通过onQueryTextListener过滤它。 想法是禁用键入不允许字符,如点,逗号,斜杠等 – 只允许[AZ]这里是代码(我正在使用Kotlin,但它是可读的Java): var shouldQueryChangeBeInvoked = true override fun onCreate(savedInstanceState: Bundle?) { … searchField.setOnQueryTextListener(this) } override fun setSearchQuery(query: String) { shouldQueryChangeBeInvoked = false searchField.setQuery(query, false) shouldQueryChangeBeInvoked = true } override fun onQueryTextChange(newText: String?): Boolean { if (!shouldQueryChangeBeInvoked) { return false } val validQuery = validateQuery(newText) validQuery?.let { setSearchQuery(it) } return false } 例如,我输入“ABC”。 […]

Android Leanback库Horizo​​ntalGridView的scrollToPosition不起作用

我正在实施Android TV应用程序,并使用Leanback library HorizontalGridView 。 我有一个自定义布局。 在创建活动之后,我必须将HorizontalGridView滚动到特定位置,但不幸的是, scrollToPositio(position)方法根本无法在此布局上工作。 它什么都不做。 我发现,当我专门设置layout manager LinearLayoutManager它的作品。 但问题是,当我不使用leanback默认的HorizontalGridView LayoutManager ,使用D-pad聚焦下一个项目时出现问题。 基本上,如果我使用普通的RecyclerView ,带有D-pad的控件不能按预期工作,所以我决定采用leanback实现,这个问题已经解决了,但是到目前为止我还是无法使用scrollToPosition方法。 有任何想法吗? 我的代码片段: 布局: 代码[Kotlin]: binding.photoGalleryRecycler.scrollToPosition(position) binding.photoGalleryRecycler.getChildAt(position)?.requestFocus() 我也尝试了一些这样的黑客: // save default leanback layout manager var defaultLayoutManager = binding.photoGalleryRecycler.layoutManager // set LinearLayoutManager binding.photoGalleryRecycler.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false) // scroll to position and request focus binding.photoGalleryRecycler.scrollToPosition(position) binding.photoGalleryRecycler.getChildAt(position)?.requestFocus() // set default layout […]

Android:导航到另一个片段

我有一个ViewPager和TabLayout设置4片段,就像任何现代的社交应用程序。 我尝试过,尝试过,尝试过,但我无法find我的问题的答案。 在其中一个选项卡中,我想从片段导航到另一个片段,但不是导航,而是将其放在顶部,我仍然可以与前一个片段进行交互。 这不是替代,只是把它放在最上面。 码: // Chat fragment : Inside the onCreateView fun this.loadConvos({ chats -> this.chatsArray = chats this.chatsArray.sortBy { it.timestamp} this.chatsArray.reverse() listView.adapter = ChatBaseAdapter(this.chatsArray, context) listView.setOnItemClickListener { parent, view, position, id -> this.chatID = this.chatsArray[position].chatID!! Toast.makeText(context, “Position Clicked: ” + position, Toast.LENGTH_SHORT).show() childFragmentManager .beginTransaction() .replace(R.id.chatFragmentLayout, MessagesFragment()) .addToBackStack(null) .commit() } }, { error -> […]

链接多个RxJava,Room和Retrofit

我正在使用RxJava / Kotlin和Room和Retrofit。 我确信我没有写任何东西,因为我刚开始学习RxJava。 这种情况是我打电话来检查数据库中是否有最喜欢的记录,并将它们放入列表中,从API获取数据并将其插入到数据库中,使用之前的collections夹列表更新数据库,并获取所有记录更新,列表。 我得到了我的片段的结果,但每次我得到它,就好像我得到1不喜欢的项目,直到我没有collections的项目。 Repository fun getKafaniFromApi(): Observable<List> { return apiService.getKafani().toObservable().doOnNext { insertKafaniInDb(it) } } fun getKafaniFromDb(): Observable<List> { return kafanaDao.getKafani().toObservable() } fun insertKafaniInDb(kafani: List) { Observable.fromCallable { kafanaDao.insertAll(kafani) } .subscribeOn(Schedulers.io()) .subscribe { Timber.d(“Inserted ${kafani.size} kafani from API in DB…”) } } fun getFavoriteKafani(): Single<List> { return kafanaDao.getFavoriteKafani() } fun setKafanaFavorite(kafana: Kafana, isFavorite: […]