在这篇文章中,我们将为您详细介绍java–Retrofit返回null值的内容,并且讨论关于java返回值是什么意思的相关问题。此外,我们还会涉及一些关于android–FirebaseAuth.ge
在这篇文章中,我们将为您详细介绍java – Retrofit返回null值的内容,并且讨论关于java返回值是什么意思的相关问题。此外,我们还会涉及一些关于android – FirebaseAuth.getCurrentUser()返回null值、android – sharedpreferences返回null值、android – View.getContext返回null,为什么?、android – 方法返回null值的知识,以帮助您更全面地了解这个主题。
本文目录一览:- java – Retrofit返回null值(java返回值是什么意思)
- android – FirebaseAuth.getCurrentUser()返回null值
- android – sharedpreferences返回null值
- android – View.getContext返回null,为什么?
- android – 方法返回null值
java – Retrofit返回null值(java返回值是什么意思)
我正在使用Retrofit,而且我在Android中非常棒.
我的JSON响应
{
"movie": {
"_id": "568661682d33bca267fdf81b",
"poster_path": "https://image.tmdb.org/t/p/w154/xHfhQIK4BNlsGv5Ylx8mVq0hJT1.jpg",
"adult": false,
"overview": "",
"release_date": "2015-05-15",
"id": 76341,
"original_title": "Mad Max: Fury Road",
"original_language": "en",
"title": "Mad Max: Furia en la carretera",
"Vote_count": 3105,
"__v": 0,
"popular": true,
"production_companies": [],
"cast": [],
"genre_ids": [
53,
28,
12
]
}
}
这是我的电影模型:
public class Movie {
public String Id;
//more variables
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
//more getter and setter
我的Retrofit界面
public interface MyApiEndPointsInterface {
@GET("/movie/{id}")
Call<Movie> getMovie(@Path("id") int id);
}
和活动中的代码
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
MyApiEndPointsInterface apiService =
retrofit.create(MyApiEndPointsInterface.class);
Call<Movie> call = apiService.getMovie(76341);
call.enqueue(new Callback<Movie>() {
@Override
public void onResponse(Response<Movie> response, Retrofit retrofit) {
Log.d("MainActivity", response.body().title);
}
@Override
public void onFailure(Throwable t) {
}
});
我认为它可以是JSON响应,因为它有一个优秀的实例,但我不知道如何在代码中使用它.
我没有得到回复,这一切都正确吗?
解决方法:
问题是JSON解析器不期望在JSON中包装“movie”数据的未命名根对象.
如果您可以更改服务器返回的JSON,请删除外部对象,以便您拥有
{
"_id": "568661682d33bca267fdf81b",
"poster_path": "https://image.tmdb.org/t/p/w154/xHfhQIK4BNlsGv5Ylx8mVq0hJT1.jpg",
"adult": false,
"overview": "",
"release_date": "2015-05-15",
"id": 76341,
"original_title": "Mad Max: Fury Road",
"original_language": "en",
"title": "Mad Max: Furia en la carretera",
"Vote_count": 3105,
"__v": 0,
"popular": true,
"production_companies": [],
"cast": [],
"genre_ids": [
53,
28,
12
]
}
如果您无法改变服务器的响应,可以通过几种方法在客户端处理它.我只是创建另一个对象来映射到外部JSON对象,因此将现有的Movie类保留为原样,添加:
public class MovieResponse {
public Movie movie;
}
然后更改Retrofit调用以使用MovieResponse而不是Movie.
然后你可以参考
movieResponse.movie
android – FirebaseAuth.getCurrentUser()返回null值
FirebaseAuth.getCurrentUser()返回null值.以前我的代码工作正常,但几天后它返回currentUser为null.
此外,我已经在另一台设备上尝试了我的应用程序,在该设备中,一切都运行正常,使用相同的代码.
mAuth=FirebaseAuth.getInstance();
mCurrentUser=mAuth.getCurrentUser()
mUserDatabase=FirebaseDatabase.getInstance().getReference().child("Users")
.child(mCurrentUser.getUid());
例外:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual
method ‘java.lang.String
com.google.firebase.auth.FirebaseUser.getUid()’ on a null object
reference
我已经尝试删除应用程序数据,卸载并重新安装我的设备上的应用程序但没有任何效果.
我的设备或Firebase有问题吗?
解决方法:
看起来用户没有登录到您的应用程序,这会导致mCurrentUser.getUid()抛出异常.
解决方案是只调用getUid()是否有签名的yser:
mCurrentUser=mAuth.getCurrentUser();
if (mCurrentUser != null) {
mUserDatabase=FirebaseDatabase.getInstance().getReference().child("Users")
.child(mCurrentUser.getUid());
}
android – sharedpreferences返回null值
我正在尝试使用sharedpreferences来检查用户在开始使用应用程序之前是否已登录.我在用户登录时将用户名保存在shredpreferences中.
Login.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
Button btnLogin = (Button) findViewById(R.id.buttonlogin);
btnLogin.setonClickListener(new View.OnClickListener() {
public void onClick(View adapt) {
EditText usernameEditText = (EditText) findViewById(R.id.EditUserName);
userName = usernameEditText.getText().toString();
EditText passwordEditText = (EditText) findViewById(R.id.EditPassword);
userPassword = passwordEditText.getText().toString();
if (userName.matches("") && userPassword.matches("")) {
toast("Please enter Username and Password");
return;
} else if (userName.matches("") || userName.equals("")) {
toast("Please enter Username");
return;
} else if (userPassword.matches("") || userPassword.equals("")) {
toast("Please enter Password");
return;
} else {
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("MEM1", userName);
editor.commit();
new DownloadFilesTask().execute();
}
}
});
}
private void toast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
private class DownloadFilesTask extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
}
protected void onPostExecute(Void result) {
toast("user logged in");
startActivity(new Intent(Login.this, MainActivity.class));
finish();
}
@Override
protected Void doInBackground(Void... params) {
return null;
}
}
}
我开始使用mainactivity之前尝试检查用户名值.
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
String username =sharedPreferences.getString("MEM1", "");
if(username.equalsIgnoreCase("")||username.length()==0)
{
toast("username is null");
startActivity(new Intent(MainActivity.this, Login.class));
finish();
}
但用户名始终为null.请帮忙.谢谢
解决方法:
写下代码而不是代码将用户名保存到共享首选项中.
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor editor = myPrefs.edit();
editor.putString("MEM1", userName);
editor.commit();
并使用下面的代码获取首选项值.
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String username = myPrefs.getString("MEM1","");
android – View.getContext返回null,为什么?
我正在使用带有javascript界面的WebView,有时当我在webView上调用loadUrl时,mWebView.getContext()返回null.
>视图如何没有上下文?为什么?
>视图whitout上下文是否仍在使用或可重用?
>当我的观点没有背景时,我该怎么办?
>最重要的是,如果视图没有上下文,那么mWebView.post(new Runnable(){…会被执行吗?
>这段代码是否相关?
if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
mWebView.loadUrl("javascript:...");
} else {
mWebView.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:...");
}
});
}
解决方法:
视图的空上下文的2个常见原因:
>您正在尝试在异步(处理程序,网络调用)调用的回调中获取上下文,但由于用户的另一个操作(例如:已按下),活动/片段已消失.因此视图被分离并且不再具有上下文.
>您的某处存在内存泄漏,并且您的活动和视图层次结构有两个或更多实例.然后在你不再引用的实例中发生了某些事情,但是视图已经失去了与其上下文的链接.
关于处理程序.
我不确定视图是否有自己的处理程序,或者如果它使用它附加的Activity的处理程序,你可能必须阅读源代码才能找到.然而问题并不是真的相关:如果视图没有上下文,则会出现更大的问题:它不在屏幕上.
关于5.中的代码是否相关,您需要回答这些问题:为什么不知道您的代码在哪个线程上运行?
当你知道自己在哪个线程上,并且如果你不在主线程上是有意义的话,那么使用处理程序是在main上执行代码的有效方法.以及Activity.runOnUiThread()
请记住,Handler的生命周期与活动无关.因此,当活动/片段暂停时,您应该清除消息队列和runnables
android – 方法返回null值
static String userLocation(String url) { RequestQueue queue = Volley.newRequestQueue(context); // String url = "http://www.jobdiagnosis.com/iphone/userlocation.PHP"; StringRequest dr = new StringRequest(Request.Method.GET,url,new Response.Listener<String>() { @Override public void onResponse(String response) { // response res=response; //edit_location.setText(response); // Toast.makeText(context,response,Toast.LENGTH_LONG).show(); } },new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // error. Toast.makeText(getApplicationContext(),"error"+error,Toast.LENGTH_LONG).show(); Log.d("error",""+error); } } ); queue.add(dr); return res; }
当我用同样的方法干杯响应时,响应打印正常
当我调用method和print return语句时,res打印null.
任何帮助表示赞赏.先感谢您.
请建议我如何在一项或多项活动中分享回复
抱歉我的英语不好..
解决方法
关于java – Retrofit返回null值和java返回值是什么意思的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于android – FirebaseAuth.getCurrentUser()返回null值、android – sharedpreferences返回null值、android – View.getContext返回null,为什么?、android – 方法返回null值的相关信息,请在本站寻找。
本文标签: