gpt4 book ai didi

android - 数据没有加载,也没有错误或警告显示

转载 作者:行者123 更新时间:2023-11-30 01:20:10 24 4
gpt4 key购买 nike

我遇到了麻烦,我尝试将我的 fragment 转换为 Activity ,当我尝试运行应用程序时,所有数据都未加载并且没有显示警告或错误,请有人帮忙

import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.NetworkImageView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class RekomendasiExercise extends AppCompatActivity implements AdapterView.OnItemClickListener{

// Log tag
private static final String TAG = AbdominalFragment.class.getSimpleName();

// Movies json url
private static final String url = "http://......";
private ProgressDialog pDialog;
private List<Exercise> exerciseList = new ArrayList<Exercise>();
private ListView listView;
private CustomListAdapter adapter;

public RekomendasiExercise() {
// Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

}

@Override
public void onDestroy() {
super.onDestroy();
hidePDialog();
}

private void hidePDialog() {
if (pDialog != null) {
pDialog.dismiss();
pDialog = null;
}
}


public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_list, container, false);
// Inflate the layout for this fragment

final ListView listView = (ListView) rootView.findViewById(R.id.list);
adapter = new CustomListAdapter(this, exerciseList);
listView.setAdapter(adapter);

pDialog = new ProgressDialog(this);
// Showing progress dialog before making http request
pDialog.setMessage("Loading...");
pDialog.show();

if(exerciseList.isEmpty()) {
// Creating volley request obj
JsonArrayRequest exerciseReq = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
hidePDialog();

exerciseList.clear();

// Parsing json
for (int i = 0; i < response.length(); i++) {
try {

JSONObject obj = response.getJSONObject(i);
Exercise exercise = new Exercise();
if (obj.getString("tipe").equals("abdominal")) {
exercise.setNama(obj.getString("nama"));
exercise.setGambar1(obj.getString("gambar1"));
// Genre is json array
// adding movie to movies array
exerciseList.add(exercise);
}
} catch (JSONException e) {
e.printStackTrace();
}

}

// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
hidePDialog();

}
});

// Adding request to request queue
AppController.getInstance().addToRequestQueue(exerciseReq);
}else{
hidePDialog();
}

listView.setOnItemClickListener(this);
return rootView;
}

@Override
public void onItemClick(AdapterView<?> parent, View convertView, int position, long id) {
// Create custom dialog object
final Dialog dialog = new Dialog(this);

// Include dialog.xml file
dialog.setContentView(R.layout.dialog); // layout of your dialog

ImageLoader imageLoader = AppController.getInstance().getImageLoader();
NetworkImageView thumbnail1 = (NetworkImageView ) dialog.findViewById(R.id.gambar1);
thumbnail1.setImageUrl(exerciseList.get(position).getGambar1(), imageLoader);


// Set dialog title
dialog.setTitle("Detail");

// set values for custom dialog components - text, image and button
TextView nama = (TextView) dialog.findViewById(R.id.nama);
nama.setText("Nama = " + exerciseList.get(position).getNama());

dialog.show();
}
}

如果在 Fragment 中默认它运行完美并且没有问题,但是当我尝试使用 Activity 时所有数据都不会加载。

最佳答案

我看不到创建 Activity 时会运行的任何代码。您有一个 onCreateView 方法(我猜您是从基于 Fragment 的实现中继承过来的)。除非在您的代码中的某处(我看不到如何)调用该方法,否则它永远不会被调用,因为它不是 Activity 生命周期的一部分。我会将整个代码从该方法复制到 onCreate 方法(作为起点)并删除该方法。然后我会对前几行进行以下更改

// View rootView = inflater.inflate(R.layout.activity_list, container, false);
// Noticed that I commented out the above line and changed the line below
final ListView listView = (ListView) findViewById(R.id.list);

我并不是说这会解决您的所有问题,因为可能(可能)还有其他问题,但您应该是第一步。我强烈建议您更加熟悉 Activity 和 Fragment 类,并更加熟悉它们的生命周期。另外,你应该摆脱

public RekomendasiExercise() {
// Required empty public constructor
}

祝你好运

关于android - 数据没有加载,也没有错误或警告显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37241538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com