Всем привет! Столкнулся с проблемой, что после newCall , пытаясь сделать startActivity, программа крашится , много чего перечитал, но решения так и не нашёл. Вот сама ошибка. Всем заранее спасибо!
E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.example.denis.leagueoflegends, PID: 16038
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
at android.app.Activity.startActivityForResult(Activity.java:4489)
at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
at android.app.Activity.startActivityForResult(Activity.java:4446)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720)
at android.app.Activity.startActivity(Activity.java:4807)
at android.app.Activity.startActivity(Activity.java:4775)
at com.example.denis.leagueoflegends.choice_player.start_summoner_page(choice_player.java:204)
at com.example.denis.leagueoflegends.HttpGet$2.onResponse(HttpGet.java:160)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
public class HttpGet implements HttpListener {
public OkHttpClient client = new OkHttpClient();
private HttpListener listener;
GetUrl GETURL;
GetCall GETCALL;
choice_player CHOICE;
private LocalBroadcastManager brodcast;
private Context context;
public String summoner_region;
public String summoner_id;
public String summoner_name;
public String summoner_profile_icon;
public String summoner_level;
public String summoner_solo_rank;
Intent page;
//Установка listener
//Инициализации классов
HttpGet(HttpListener listener) {
this.listener = listener;
GETURL = new GetUrl();
GETCALL = new GetCall(this);
choice_player CHOICE;
//CHOICE = new choice_player();
}
//Запросы данных из API
public void get_summoner_id(String REGION, final String summoner_name) {
summoner_region = REGION;
final Request request = new Request.Builder().url(this.GETURL.get_url_summoner_by_summoner_name(summoner_name, REGION)).build();
call_summoner_id(request);
}
public void get_summoner_name(String REGION, String summoner_id){
final Request request = new Request.Builder().url(this.GETURL.get_url_summoner_by_id(summoner_id, REGION)).build();
call_summoner_name(request);
}
public void check_id(){
if (this.summoner_id != null && !this.summoner_id.isEmpty()) {
CHOICE.start_page();
} else {
CHOICE.error_summoner(404);
}
}
public void set_summoner_id(String value) {
this.summoner_id = value;
CHOICE.summoner_id = value;
}
public void set_summoner_name(String value) {
this.summoner_name = value;
}
public void check_summoner(String region, String summoner_name_value) {
get_summoner_id(region, summoner_name_value);
}
public void call_summoner_id(Request request){
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
listener.onFailure();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
Response response_summoner = response;
System.out.print(response_summoner);
JSONObject json = new JSONObject(response_summoner.body().string());
final String new_summoner_id = json.getString("id");
summoner_id = new_summoner_id;
check_id();
//set_summoner_id(new_summoner_id);
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public void call_summoner_name(Request request){
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
listener.onFailure();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
Response response_summoner = response;
System.out.print(response_summoner);
JSONObject json = new JSONObject(response_summoner.body().string());
final String new_summoner_name = json.getString("name");
set_summoner_name(new_summoner_name);
//CHOICE.set_summoner_intent("name", new_summoner_name);
CHOICE.start_summoner_page(CHOICE.summoner_pagee);
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public void get_champrion_by_id(String champion_id, String REGION) {
final Request request_champion = new Request.Builder().url(this.GETURL.get_url_champion_by_champion_id(champion_id, REGION)).build();
}
public void SetResponse(String response) throws JSONException {
listener.onSuccess(response);
}
private void sendMessage() {
Log.d("sender", "Broadcasting message");
Intent intent = new Intent("summoner_id");
System.out.print(intent + "this is id of summoner");
// You can also include some extra data.
intent.putExtra("message", "This is my message!");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
@Override
public void onSuccess(String response) throws JSONException {
}
@Override
public void onFailure() {
}
}
public class choice_player extends AppCompatActivity implements
View.OnClickListener, HttpListener {
HttpGet GETAPI;
GetCall GETCALL;
GetUrl GetUrl;
ImageView ru;
ImageView euw;
ImageView eun;
ImageView na;
ImageView search;
EditText summoner_name_input;
String region;
String summoner_id;
String summoner_name;
TextView error_text;
Intent summoner_pagee;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_choice_player);
region = "";
GETAPI = new HttpGet(this);
GetUrl = new GetUrl();
GETCALL = new GetCall(this);
error_text = (TextView) findViewById(R.id.error_text);
ru = (ImageView) findViewById(R.id.ru);
euw = (ImageView) findViewById(R.id.euw);
eun = (ImageView) findViewById(R.id.eun);
na = (ImageView) findViewById(R.id.na);
search = (ImageView) findViewById(R.id.search);
summoner_name_input = (EditText) findViewById(R.id.summoner_name);
summoner_name_input.setOnClickListener(this);
search.setOnClickListener(this);
ru.setOnClickListener(this);
euw.setOnClickListener(this);
eun.setOnClickListener(this);
na.setOnClickListener(this);
summoner_pagee = new Intent(getApplicationContext(), summoner_page.class);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.ru:
clear_region_errors();
ru.setBackgroundResource(R.drawable.enter);
set_region("ru");
break;
case R.id.euw:
clear_region_errors();
euw.setBackgroundResource(R.drawable.enter);
set_region("euw1");
break;
case R.id.eun:
clear_region_errors();
eun.setBackgroundResource(R.drawable.enter);
set_region("eun1");
break;
case R.id.na:
clear_region_errors();
na.setBackgroundResource(R.drawable.enter);
set_region("na1");
break;
case R.id.summoner_name:
clear_summoner_errors();
summoner_name_input.setTextColor(Color.WHITE);
break;
case R.id.search:
String region = this.region;
String summoner_name_value = summoner_name_input.getText().toString();
if (!summoner_name_value.isEmpty() && !region.isEmpty()) {
GETAPI.check_summoner(region, summoner_name_value);
}
if (summoner_name_value.isEmpty()) {
error_summoner(405);
}
if (region.isEmpty()) {
error_summoner_region();
}
break;
}
}
//
//МЕТОДЫ ОШИБОК
//
//ВЫВОДЫ ОШИБОК
public void error_summoner(Integer code) {
if (code == 405) {
error_text.setText("Введите имя призываетля");
}
if (code == 404) {
error_text.setText("Данного призывателя не существует");
}
}
public void error_summoner_region() {
ru.setBackgroundColor(Color.RED);
euw.setBackgroundColor(Color.RED);
eun.setBackgroundColor(Color.RED);
na.setBackgroundColor(Color.RED);
}
//ОЧИСТКА ОШИБОК
public void clear_summoner_errors() {
error_text.setText("");
}
public void clear_region_errors() {
ru.setBackgroundColor(0);
euw.setBackgroundColor(0);
eun.setBackgroundColor(0);
na.setBackgroundColor(0);
}
public void set_region(String Region) {
this.region = Region;
}
public void set_summoner_intent(String name, String value, Intent intent) {
intent.putExtra(name, value);
}
public void set_id(String id) {
this.summoner_id = id;
}
public void start_page(){
startActivity(summoner_pagee);
}
public void start_summoner_page(Intent intent){
System.out.print(summoner_pagee);
}
@Override
public void onSuccess(final String response) throws JSONException {
}
@Override
public void onFailure() {
System.out.print("error");
}
}
CHOICE? – ЮрийСПб Dec 25 '17 at 13:02