サーバーにデータが保存されている場所にアプリを作成しようとしています。リストビューでデータを取得しています。オンラインにアクセスしたときにデータにアクセスできます.私のコードの設定をしてからデータにアクセスしようとすると、私のコードは次のデータにアクセスできなくなります。 MainActivityインターネットなしでデータにアクセスしているときにAndroid共有設定のエラーが発生しました
public class MainActivity extends AppCompatActivity {
ListView listView;
Button button;
String Url="my server name is here";
ArrayList<User> arrayList;
//MyFile myFile
public static String SP_FILE_NAME="sp_Listview";
//SharedPreferences spfile;
MySharedPrefLib mySharedPrefLib;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
arrayList = new ArrayList<User>();
//myFile = new MyFile(this);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isNetworkAvailable() == true) {
StringRequest stringRequest = new StringRequest(Request.Method.POST,Url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("mytag", "Response" + response);
mySharedPrefLib.sharedpreferences.edit().putString("response", response).commit();
fillResult(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Mytag", "Error" + error);
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(stringRequest);
} else if (mySharedPrefLib.checkSharedPrefs("response")) {
fillResult(mySharedPrefLib.getPref("response"));
}
}
});
}
private void fillResult(String response) {
try {
JSONArray JSONArray = new JSONArray(response);
// myFile.sharePref("response"+response).commit;
// arrayList = new ArrayList<User>();
for (int i = 0; i < JSONArray.length(); i++) {
JSONObject jsonObject = JSONArray.getJSONObject(i);
User user = new User();
user.setID(jsonObject.getString("ID"));
user.setName(jsonObject.getString("Name"));
user.setEmail(jsonObject.getString("Email"));
user.setPassword(jsonObject.getString("Password"));
arrayList.add(user);
}
UserAdapter<User> userAdapter = new UserAdapter(getApplicationContext(), arrayList);
listView.setAdapter(userAdapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
boolean isNetworkAvailable() {
ConnectivityManager cm = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
return isConnected;
}
}
MySharedPrefLib.java私はuser.javaとuseradpter がfollwingされ、さらに2つのクラスは私のエラーログで追加してい代わりに、このの
public class MySharedPrefLib {
Context context;
SharedPreferences sharedpreferences;
public MySharedPrefLib(Context context){
this.context=context;
sharedpreferences = context.getSharedPreferences(MainActivity.SP_FILE_NAME, Context.MODE_PRIVATE);
}
public void saveSharedPrefs(String user_id, String user_name, String user_email){
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("ID", user_id);
editor.putString("Name", user_name);
editor.putString("Email", user_email);
editor.putString("Password", user_email);
editor.commit();
}
public String getPref(String key) {
SharedPreferences preferences = context.getSharedPreferences(MainActivity.SP_FILE_NAME, Context.MODE_PRIVATE);
return preferences.getString(key, null);
}
public void clearSharedPrefs(){
SharedPreferences sharedpreferences = context.getSharedPreferences(MainActivity.SP_FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.clear();
editor.commit();
}
public boolean checkSharedPrefs(String key){
SharedPreferences sharedPrefs = context.getSharedPreferences(MainActivity.SP_FILE_NAME, Context.MODE_PRIVATE);
if(sharedPrefs.contains(key)) {
return true;
}
return false;
}
}
エラーL OG
09-21 12:21:40.039 19716-19716/com.example.mahadev.listview2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mahadev.listview2, PID: 19716
java.lang.NullPointerException: Attempt to read from field 'android.content.SharedPreferences com.example.mahadev.listview2.MySharedPrefLib.sharedpreferences' on a null object reference
at com.example.mahadev.listview2.MainActivity$1$1.onResponse(MainActivity.java:58)
at com.example.mahadev.listview2.MainActivity$1$1.onResponse(MainActivity.java:52)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
エラーどんな提案ここ
mySharedPrefLib.sharedpreferences.edit().putString("response", response).commit();
そしてここ
StringRequest stringRequest = new StringRequest(Request.Method.POST,Url, new Response.Listener<String>() {
を上に来る歓迎されています。
を投げit't初期化されていません。 –
ありがとうございました –