ここに私のコードがあります。null配列エラー
package com.example.onewdivide.fortunecookiesnew;
import android.content.Intent; import android.os.AsyncTask; import
android.support.v7.app.AppCompatActivity; import android.os.Bundle;
import android.util.Log; import android.view.Menu; import
android.view.MenuInflater; import android.view.MenuItem; import
android.view.View; import android.widget.ImageButton; import
android.widget.ImageView; import android.widget.TextView;
import com.google.gson.Gson; import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type; import java.util.Collection;
import okhttp3.OkHttpClient; import okhttp3.Request; import
okhttp3.Response;
public class Process extends AppCompatActivity {
ImageButton MakeAWish;
TextView TextAtB;
TextView TextAtCookies;
TextView TextAtDate;
TextView TextAtResult;
ImageView Cookies;
String meanning;
String[] ResultFromRequest;
int Check;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_process);
MakeAWish = (ImageButton) findViewById(R.id.Button);
MakeAWish.setOnClickListener(myhandler1);
TextAtB = (TextView) findViewById(R.id.textatbutton);
TextAtCookies = (TextView)findViewById(R.id.resultatpic);
TextAtDate = (TextView)findViewById(R.id.date);
TextAtResult = (TextView)findViewById(R.id.textView7);
Cookies = (ImageView)findViewById(R.id.imageView);
Log.d("Debug this","zero");
Check = 0;
}
public class JSONTask extends AsyncTask<String[], Void, CookiesResponse[]> {
@Override
protected CookiesResponse[] doInBackground(String[]... strings) {
try{
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("www.atilal.info/cookies.php").build();
Response response = client.newCall(request).execute();
String result = response.body().string();
Gson gson = new Gson();
Type collectionType = new TypeToken<Collection<CookiesResponse>>() {}.getType();
Collection<CookiesResponse> enums = gson.fromJson(result, collectionType);
CookiesResponse[] cookiesResult = enums.toArray(new CookiesResponse[enums.size()]);
String[] resultlast = {cookiesResult[0].getMeaning(),cookiesResult[0].getMessage()};
Log.d("Debug this","two");
ResultFromRequest = resultlast;
return cookiesResult;
}catch (Exception e){
}
return null;
}
@Override
protected void onPostExecute(CookiesResponse[] s){
super.onPostExecute(s);
}
}
View.OnClickListener myhandler1 = new View.OnClickListener() {
public void onClick(View v) {
Check+=1;
new JSONTask().execute();
if(Check==1){
Log.d("Debug this","one");
TextAtCookies.setText(ResultFromRequest[0]);
TextAtResult.setText("Result : "+ ResultFromRequest[0]);
meanning = ResultFromRequest[1];
TextAtB.setText("SAVE");
}
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_name) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent); // return true;
}
return super.onOptionsItemSelected(item);
}
}
私のボタンをクリックすると。それは致命的な例外を持つでしょう。それは
10-25 02:15:05.804 9777-9809/com.example.onewdivide.fortunecookiesnew E/OpenGLRenderer: allen debug liyu Key: 68724719680
10-25 02:15:06.426 9777-9777/com.example.onewdivide.fortunecookiesnew E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.onewdivide.fortunecookiesnew, PID: 9777
java.lang.NullPointerException: Attempt to read from null array
at com.example.onewdivide.fortunecookiesnew.Process$1.onClick(Process.java:104)
at android.view.View.performClick(View.java:5646)
at android.view.View$PerformClick.run(View.java:22459)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832) 10-25
02:15:06.435 9777-9777/com.example.onewdivide.fortunecookiesnew I/Process: Sending signal. PID: 9777 SIG: 9
あなたの質問は何ですか? いずれの場合でも、 'ResultFromRequest = resultlast;' ** never ** get'の行が表示され、結果として 'ResultFromRequest' _ **はインスタンス化されません** _。 「ResultFromRequest」がインスタンス化されない理由は、あなたの 'try'ブロック内で例外が発生したためです。そして、あなたは現在そのブロックの中の例外を無視しているので、あなたはそれを知らない。 –