خطا در تعریف لیست ویو داخل اکتیویتی فرگمنت!
سلام. وقت بخیر
من از Fragment آماده اندروید استودیو استفاده کردم توی پروژم. همه چیش خوب کار میکنه و اکتیویتی ها به درستی نمایش داده میشن ولی توی یکی از اکتیویتی ها که میخوام لیست ویو بذارم، خطای زیر رو نمایش میده:
این هم کد اکتیویتی:
public class ActivityHome extends android.support.v4.app.Fragment {
public static ArrayList<StructOnlineData> data = new ArrayList<StructOnlineData>();
private ArrayAdapter adapter;
public ListView lstNews;
View rootview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootview = inflater.inflate(R.layout.activity_home,
container, false);
return rootview;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lstNews = (ListView) rootview.findViewById(R.id.lstNews);
adapter = new AdapterData(data);
lstNews.setAdapter(adapter); //از این خط خطا میگیره
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
readData();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
ممنون میشم اگه کمک کنید
هنگام اجرا، این اطلاعات رو نشون میده:
چند خط اول رو از متد readData لوگ گرفتم.
مشکل اینجاس که adapter با لیست ویوی داخل فرگمنت ست نمیشه و از همین خطا میگیره (اون سه تا لینک آبی)
آخرین سورسی که نوشتم اینه: (البته این کدها رو علاوه بر onCreateView، داخل onActivityCreated و onCreate هم نوشتم ولی خطاها یکسان بود). سورس adapterم هم مثل بقیه لیست ویو هاس. اگه نیاز بود تا سورس اونم بذارم
جاهایی که اون لینک آبی ها روش خطا میگیره رو هم مشخص کردم
public class ActivityHome extends ListFragment { //لینک آبی دوم
public static ArrayList<StructOnlineData> data = new ArrayList<StructOnlineData>();
private ArrayAdapter adapter;
public ListView lstNews;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootview = inflater.inflate(R.layout.activity_home,
container, false);
lstNews = (ListView)rootview.findViewById(android.R.id.list);
adapter = new AdapterData(data);
lstNews.setAdapter(adapter);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
readData(); //لینک آبی سوم
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
return rootview;
}
private void readData() {
// String newsUnicode = null;
String newsConverted;
//Read URL For Receive Json Code
String result = Webservice.readUrl(url);
if (result != null) {
try {
G.data.clear();
JSONArray jsonnews = new JSONArray(result);
for (int i = 0; i < jsonnews.length(); i++) {
JSONObject object = jsonnews.getJSONObject(i);
StructOnlineData news = new StructOnlineData();
String newsUnicode = object.getString("n_dec");
//Call "decode" Function
newsConverted = decode(newsUnicode);
news.newsTitr = object.getString("n_title");
news.newsSummary = newsConverted;
news.newsUrl = object.getString("n_link");
Log.i("LOG", "url: " + news.newsUrl);
news.newsDate = object.getString("n_shodate");
news.newsResource = "تابناک";
news.newsPositiveRate = object.getString("n_up");
news.newsNegativeRate = object.getString("n_down");
G.data.add(news);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
adapter.notifyDataSetChanged(); //لینک آبی اول
}
من از لیست ویو توی Fragment تو پروژه قبلیم استفاده کردم مشکلی هم نداشت.
یه نگاه که به کدتون انداختم دیدم کد زیر رو کم داره:(قبل از onCreateView قرار بدید، ببینید درست میشه)
public ActivityHome() {}
دوستان شما که کار کردید چطور از یک فرگمنت میشه رفت داخل فرگمنت دیگر
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .


