Java 尝试从不同类调用函数时应用程序崩溃
我试图在对微调器更改进行排序后调用函数getData(),但我不断遇到错误和应用程序崩溃 这是my homepageActivity中的函数:Java 尝试从不同类调用函数时应用程序崩溃,java,android,Java,Android,我试图在对微调器更改进行排序后调用函数getData(),但我不断遇到错误和应用程序崩溃 这是my homepageActivity中的函数: private JsonArrayRequest getDataFromServer(int requestCount, int SortType) { //Initializing ProgressBar final ProgressBar progressBar = (ProgressBar) findViewById
private JsonArrayRequest getDataFromServer(int requestCount, int SortType) {
//Initializing ProgressBar
final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar1);
String FINAL_URL = "";
//Displaying Progressbar
progressBar.setVisibility(View.VISIBLE);
setProgressBarIndeterminateVisibility(true);
//JsonArrayRequest of volley
if(SortType == 0){
FINAL_URL = Config.DATA_URL + String.valueOf(requestCount);
}else if (SortType == 1){
FINAL_URL = Config.DATA_URL + String.valueOf(requestCount);
}else{
Log.d("ERROR:","sort is more than 1");
}
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(FINAL_URL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
//Calling method parseData to parse the json response
parseData(response);
//Hiding the progressbar
progressBar.setVisibility(View.GONE);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressBar.setVisibility(View.GONE);
//If an error occurs that means end of the list has reached
Toast.makeText(homepageActivity.this, "No More Items Available", Toast.LENGTH_SHORT).show();
}
});
//Returning the request
return jsonArrayRequest;
}
//This method will get data from the web api
public void getData(int sort) {
//Adding the method to the queue by calling the method getDataFromServer
requestQueue.add(getDataFromServer(requestCount, sort));
//Incrementing the request counter
requestCount++;
}
//This method will parse json data
private void parseData(JSONArray array) throws RuntimeException {
for (int i = 0; i < array.length(); i++) {
//Creating the superhero object
SuperHero superHero = new SuperHero();
JSONObject json = null;
try {
//Getting json
json = array.getJSONObject(i);
//Adding data to the superhero object
superHero.setImageUrl(json.getString(Config.TAG_IMAGE_URL));
superHero.setName(json.getString(Config.TAG_NAME));
superHero.setPublisher(json.getString(Config.TAG_PUBLISHER));
} catch (JSONException e) {
e.printStackTrace();
}
//Adding the superhero object to the list
listSuperHeroes.add(superHero);
}
//Notifying the adapter that data has been added or changed
Log.d("ADebugTag", "Value: " + listSuperHeroes);
adapter.notifyDataSetChanged();
}
private JsonArrayRequest getDataFromServer(int-requestCount,int-SortType){
//初始化进度条
最终ProgressBar ProgressBar=(ProgressBar)findViewById(R.id.progressBar1);
字符串FINAL_URL=“”;
//显示进度条
progressBar.setVisibility(View.VISIBLE);
SetProgressBarInDeterminateVibility(真);
//JsonArrayRequest截击
如果(SortType==0){
FINAL_URL=Config.DATA_URL+String.valueOf(requestCount);
}else if(SortType==1){
FINAL_URL=Config.DATA_URL+String.valueOf(requestCount);
}否则{
Log.d(“错误:,”排序大于1”);
}
JsonArrayRequest JsonArrayRequest=新的JsonArrayRequest(最终URL,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
//调用parseData方法来解析json响应
解析数据(响应);
//隐藏进度条
progressBar.setVisibility(View.GONE);
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
progressBar.setVisibility(View.GONE);
//若发生错误,则表示已到达列表末尾
Toast.makeText(homepageActivity.this,“没有更多可用项”,Toast.LENGTH_SHORT.show();
}
});
//返回请求
返回jsonArrayRequest;
}
//此方法将从web api获取数据
公共void getData(int排序){
//通过调用getDataFromServer方法将该方法添加到队列
add(getDataFromServer(requestCount,sort));
//递增请求计数器
requestCount++;
}
//此方法将解析json数据
私有void parseData(JSONArray数组)引发RuntimeException{
对于(int i=0;i
这就是我的卡适配器中的内容:
HPC = new homepageActivity();
Boolean checkFirst = true;
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long l) {
if(!checkFirst){
Log.d("ERROR:","hello world is clicked" + position);
homepageActivity.sortDataOn = false;
homepageActivity.listSuperHeroes.clear();
homepageActivity.adapter.notifyDataSetChanged();
homepageActivity.sortType = position;
HPC.getData(homepageActivity.sortType);
}
checkFirst = false;
}
HPC=新主页活动();
布尔checkFirst=true;
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长l){
如果(!checkFirst){
Log.d(“错误:”,单击“hello world”+位置);
homepageActivity.SortData=false;
homepageActivity.ListSuperheros.clear();
homepageActivity.adapter.notifyDataSetChanged();
homepageActivity.sortType=位置;
getData(homepageActivity.sortType);
}
checkFirst=false;
}
该应用程序工作正常,直到我更改spinner,它尝试调用getData函数,然后崩溃,并出现以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.yemencar.yemencar, PID: 4714
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
at android.support.v7.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:247)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:182)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:191)
at com.yemencar.yemencar.homepageActivity.getDataFromServer(homepageActivity.java:91)
at com.yemencar.yemencar.homepageActivity.getData(homepageActivity.java:131)
at com.yemencar.yemencar.CardAdapter$VHHeader$1.onItemSelected(CardAdapter.java:162)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:944)
at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:933)
at android.widget.AdapterView.-wrap1(Unknown Source:0)
at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:898)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
E/AndroidRuntime:致命异常:主
进程:com.yemencar.yemencar,PID:4714
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.view.Window$Callback android.view.Window.getCallback()”
在android.support.v7.app.AppCompateDelegateImpl。(appCompateDelegateImpl.java:247)
在android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:182)上
位于android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)
位于android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:191)
位于com.yemencar.yemencar.homepageActivity.getDataFromServer(homepageActivity.java:91)
在com.yemencar.yemencar.homepageActivity.getData(homepageActivity.java:131)上
在com.yemencar.yemencar.CardAdapter$VHHeader$1.onItemSelected上(CardAdapter.java:162)
在android.widget.AdapterView.fireOnSelected上(AdapterView.java:944)
在android.widget.AdapterView.dispatchOnItemSelected中(AdapterView.java:933)
位于android.widget.AdapterView.-wrap1(未知来源:0)
在android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:898)上
位于android.os.Handler.handleCallback(Handler.java:789)
位于android.os.Handler.dispatchMessage(Handler.java:98)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6541)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zy
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long l) {
homepageActivity activity = (homepageActivity) parent.getContext();
// now you can call activity.sortDataOn etc
}