小编pri*_*vex的帖子

如何从片段中捕获导航图标单击工具栏?

我有一个对话框片段,其中我有布局工具栏.我想在工具栏中使用后退按钮(导航图标)并在单击时退出片段.但我无法在(对话框)片段中捕获工具栏导航图标上的单击事件.

以下是我获取工具栏的方法:

toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
toolbar.setTitle(itemType);
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

这是对话框片段的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout          xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/panel_cyan"
    android:id="@+id/rootLayout"
    >

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:background="@color/color_primary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/listViewItems"
    />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

**这是到目前为止尝试但失败的**

选项项目在id R.id.home中单击

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id){
            case android.R.id.home:
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
Run Code Online (Sandbox Code Playgroud)

工具栏上的setNavigationOnClick():

toolbar.setNavigationOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(), "Back clicked!",     Toast.LENGTH_SHORT).show();
            }
        });
Run Code Online (Sandbox Code Playgroud)

android toolbar android-fragments

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

Ubuntu上Android Studio的键盘问题

在Ubuntu上使用Android Studio时,有些情况下IDE会停止响应键盘输入或开始输入随机字符吗?

如何解决这个问题?或者可能的解决方法.

ubuntu android android-studio ubuntu-14.04

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

在Android中使用OkHttp客户端时,标头值中出现意外的字符0x0a

使用Http发送Base64编码的字符串作为标头时,我收到错误响应

Unexpected char 0x0a at 28 in header value: I99Uy+HjG5PpEhmi8vZgm0W7KDQ=

用法:

String encodedHeader = Base64.encodeToString(value.getBytes(), Base64.DEFAULT); header.put("auth", encodedHeader);

java base64 android retrofit okhttp

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

使用RxJava2时出现错误"Callable返回null"

我在我的android项目中使用RxJava2.

我正在使用以下代码来创建 Observable

public Observable<AlbumDetails> loadAlbumFromAlbumId(final String albumId) {
    return Observable.fromCallable(new Callable<AlbumDetails>() {
        @Override
        public AlbumDetails call() throws Exception {
             AlbumDetails albumDetails = getAlbumDetails(albumId);     
             return albumDetails;   
       });
}
Run Code Online (Sandbox Code Playgroud)

从observable,我在DisposableObserver的onError方法中遇到以下错误

Callable returned null

使用RxJava时不会发生这种情况.

java android reactive-programming rx-java rx-java2

8
推荐指数
2
解决办法
7392
查看次数

Django .only() 导致最大递归深度超出错误?

我使用 Django 的.only()构造来仅查询我需要的列。

前任。

Trainer.objects.filter(id__in=ids).only('id', 'lives')

这是我写的一个简单的例子来重现这个:

class BaseTrainer(models.Model):

    mode = models.IntegerField(help_text="An integer")

    def __init__(self, *args, **kwargs):
    super(BaseTrainer, self).__init__(*args, **kwargs)
    self._prev_mode = self.mode


class Trainer(BaseTrainer):

    name = models.CharField(max_length=100, help_text="Name of the pokemon")
    trainer_id = models.CharField(max_length=10, help_text="trainer id")
    badges = models.IntegerField(help_text="Power of the pokemon (HP)")
    lives = models.PositiveIntegerField(default=sys.maxsize)

    unique_together = ("name", "trainer_id")

    def __init__(self, *args, **kwargs):
        super(Trainer, self).__init__(*args, **kwargs)
        self._temp = self.lives

    @classmethod
    def test(cls):

        t = Trainer.objects.only('trainer_id').all()

        print(t)
Run Code Online (Sandbox Code Playgroud)

我只需要 id 和 name 字段,这是肯定的。原因是maximum recursion depth exceeded什么?

python django recursion django-models django-orm

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

如何在android中使视图周围的区域变暗?

我正在尝试进行一项需要将​​方形区域显示为重点的活动。到目前为止,我已经这样做了。

在此处输入图片说明

现在我想要的是将广场外的区域变暗。使用 framelayout 会使整个视图变暗。我只想使广场外的区域变暗。

layout camera android overlay view

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

如何在Django REST Framework中的RetrieveAPIView中更改查找kwargs字段的键?

Django REST Framework使用时pk具有查找字段, RetrieveApiView并且必须在url中定义相同的内容kwargs.

这使得网址看起来像:

url(r'^(/foobar/(?P<pk>[\d]+)/$', FooBarFetch.as_view(), name="foo_bar")
Run Code Online (Sandbox Code Playgroud)

但我想pk用更具描述性的内容替换url中的内容foo_bar_id.

更改look_up_field不起作用,因为它仍然必须使用pk执行查找.

只需要在网址中更改kwrags密钥.

python api django django-rest-framework

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