java-在Retrofit调用后更改折叠的工具栏标题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-在Retrofit调用后更改折叠的工具栏标题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5340字,纯文字阅读大概需要8分钟。
内容图文
![java-在Retrofit调用后更改折叠的工具栏标题](/upload/InfoBanner/zyjiaocheng/669/00b99f45b7dd483e89602e256bc60ebf.jpg)
我正在尝试基于Retrofit2响应来修改工具栏标题,但是没有变化.
getSupportActionBar().setTitle("here work");
final Call<Process> getProcess = WiimApi.getService(serverAddress).getProcess(id);
getProcess.enqueue(new Callback<Process>() {
@Override
public void onResponse(Call<Process> call, Response<Process> response) {
mProcess = response.body();
getSupportActionBar().setTitle(mProcess.getName()); // this not work
}
@Override
public void onFailure(Call<Process> call, Throwable t) {
// ...
}
});
mProcess.getName()是JSON文件中的字符串.我也用硬编码的字符串进行了测试(防止mProcess.getName()错误的值),但是没有效果.
通话之前就像魅力一样.
收到回调后,有什么方法可以更新工具栏标题?
更新资料
谢谢您的帮助.现在,我发现了真正的问题:折叠工具栏.
我做了一个空白的应用程序来复制错误,并且代码可以正常工作,但是当我使用折叠工具栏运行相同的代码时……Bingo!完整的代码如下:
MainActivity.java:
package com.example.retrofittitle;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getData();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void getData() {
getSupportActionBar().setTitle("Here work ...");
// https://raw.githubusercontent.com/LearnWebCode/json-example/master/
final Call<Pet> getPet = MyApi.getService("https://raw.githubusercontent.com/LearnWebCode/json-example/master/").getPet();
getPet.enqueue(new Callback<Pet>() {
@Override
public void onResponse(Call<Pet> call, Response<Pet> response) {
Pet pet = response.body();
getSupportActionBar().setTitle(pet.getName()); // Here not work
TextView text = findViewById(R.id.log);
text.setText("Done");
}
@Override
public void onFailure(Call<Pet> call, Throwable t) {
getSupportActionBar().setTitle("Failure Title");
}
});
}
}
MyApi.java
package com.example.retrofittitle;
import retrofit2.Call;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
public class MyApi {
public interface ApiService {
@GET("pet-of-the-day.json")
Call<Pet> getPet();
}
public static ApiService getService(String url) {
retrofit2.Retrofit retrofit = new retrofit2.Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit.create(ApiService.class);
}
}
宠物
package com.example.retrofittitle;
public class Pet {
private String name;
private String species;
private Integer age;
private String photo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSpecies() {
return species;
}
public void setSpecies(String species) {
this.species = species;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/log"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="Requesting..."
android:layout_gravity="center" />
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="180dp"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleGravity="top"
app:expandedTitleMarginTop="?attr/actionBarSize"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
解
发现真正的问题后,我在这里搜索并找到了解决方案:
https://github.com/henrytao-me/smooth-app-bar-layout/issues/32
设置CollapsingToolbarLayout小部件ID(collapsing_toolbar)和活动代码:
CollapsingToolbarLayout mCollapsingToolbarLayout = findViewById(R.id.collapsing_toolbar);
mCollapsingToolbarLayout.setTitle(pet.getName());
现在名称已更改:D
解决方法:
我已经尝试过getSupportActionBar().setTitle(“ hello”);内部翻新回调它对我来说很好.
您的问题是每次调用onFailure时都要进行改造.因此,不会调用getSupportActionBar().setTitle(“ hello”).
也可以在onFailure中尝试getSupportActionBar().setTitle(“ hello”).
内容总结
以上是互联网集市为您收集整理的java-在Retrofit调用后更改折叠的工具栏标题全部内容,希望文章能够帮你解决java-在Retrofit调用后更改折叠的工具栏标题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。