我有一个对话框片段,其中我有布局工具栏.我想在工具栏中使用后退按钮(导航图标)并在单击时退出片段.但我无法在(对话框)片段中捕获工具栏导航图标上的单击事件.
以下是我获取工具栏的方法:
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) 在Ubuntu上使用Android Studio时,有些情况下IDE会停止响应键盘输入或开始输入随机字符吗?
如何解决这个问题?或者可能的解决方法.
使用Http发送Base64编码的字符串作为标头时,我收到错误响应
Unexpected char 0x0a at 28 in header value: I99Uy+HjG5PpEhmi8vZgm0W7KDQ=
用法:
String encodedHeader = Base64.encodeToString(value.getBytes(), Base64.DEFAULT);
header.put("auth", encodedHeader);
我在我的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时不会发生这种情况.
我使用 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
什么?
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密钥.