- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从扩展 fragment 的类将 ListView 添加到我的布局中。问题是,当数据到来时,布局显示空指针异常。这是代码:
TopStoriesFragment.java
public class TopStoriesFragment extends Fragment {
public String thehindu = "http://www.thehindu.com/news/?service=rss";
public String toi = "http://timesofindia.feedsportal.com/c/33039/f/533965/index.rss";
public String reuters = "http://feeds.reuters.com/reuters/topNews";
public String deccanherald = "http://www.deccanherald.com/rss-internal/top-stories.rss";
public String currenturl = thehindu;
AlertDialog levelDialog;
public String fakingnews = "http://thepuntended.wordpress.com/";
public LayoutInflater inflater;
ListView listView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);
feedTitle = (TextView) rootView.findViewById(R.id.feedtitle);
feedDescribtion = (TextView) rootView.findViewById(R.id.feeddescribtion);
listView = (ListView) rootView.findViewById(android.R.id.list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent intent = new Intent(getActivity(), ShowDetails.class);
Bundle bundle = new Bundle();
bundle.putString("keyTitle", myRssFeed.getItem(position).getTitle());
bundle.putString("keyDescription", myRssFeed.getItem(position)
.getDescription());
bundle.putString("keyLink", myRssFeed.getItem(position).getLink());
bundle.putString("keyPubdate", myRssFeed.getItem(position).getPubdate());
intent.putExtras(bundle);
startActivity(intent);
}
});
startReadRss();
return rootView;
}
public class RssLoadingTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
displayRss();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
preReadRss();
}
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
// super.onProgressUpdate(values);
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
readRss();
return null;
}
}
private RSSFeed myRssFeed = null;
TextView feedTitle;
TextView feedDescribtion;
// TextView feedPubdate;
// TextView feedLink;
public class MyCustomAdapter extends ArrayAdapter<RSSItem> {
public MyCustomAdapter(Context context, int textViewResourceId,
List<RSSItem> list) {
super(context, textViewResourceId, list);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
// return super.getView(position, convertView, parent);
View row = convertView;
if (row == null) {
---------------------- Logcat error takes me here----------------------------
row = inflater.inflate(R.layout.row, parent, false);
---------------------------------------------------------------------------------
}
TextView listTitle = (TextView) row.findViewById(R.id.listtitle);
listTitle.setText(myRssFeed.getList().get(position).getTitle());
TextView listPubdate = (TextView) row
.findViewById(R.id.listpubdate);
listPubdate.setText(myRssFeed.getList().get(position).getPubdate());
if (position % 2 == 0) {
listTitle.setBackgroundColor(0xff101010);
listPubdate.setBackgroundColor(0xff101010);
} else {
listTitle.setBackgroundColor(0xff080808);
listPubdate.setBackgroundColor(0xff080808);
}
return row;
}
}
private void startReadRss() {
new RssLoadingTask().execute();
}
private void preReadRss() {
feedTitle.setText("--- wait ---");
feedDescribtion.setText("");
// feedPubdate.setText("");
// feedLink.setText("");
listView.setAdapter(null);
Toast.makeText(getActivity(), "Reading RSS, Please wait.", Toast.LENGTH_LONG)
.show();
}
private void readRss() {
try {
URL rssUrl = new URL(currenturl);
SAXParserFactory mySAXParserFactory = SAXParserFactory
.newInstance();
SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
XMLReader myXMLReader = mySAXParser.getXMLReader();
RSSHandler myRSSHandler = new RSSHandler();
myXMLReader.setContentHandler(myRSSHandler);
InputSource myInputSource = new InputSource(rssUrl.openStream());
myXMLReader.parse(myInputSource);
myRssFeed = myRSSHandler.getFeed();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void displayRss() {
if (myRssFeed != null) {
Calendar c = Calendar.getInstance();
// String strCurrentTiime = "\n(Time of Reading - "
// + c.get(Calendar.HOUR_OF_DAY)
// + " Hrs. : "
// + c.get(Calendar.MINUTE) + " Mins.)\n" +c.get(Calendar.AM_PM);
SimpleDateFormat sdf = new SimpleDateFormat(
"MMMM-dd-yyyy HH:mm:ss a");
String strCurrentTiime = sdf.format(c.getTime());
feedTitle.setText(myRssFeed.getTitle());
feedDescribtion.setText(strCurrentTiime);
// feedPubdate.setText(myRssFeed.getPubdate());
// feedLink.setText(myRssFeed.getLink());
MyCustomAdapter adapter = new MyCustomAdapter(getActivity(), R.layout.row,
myRssFeed.getList());
listView.setAdapter(adapter);
}
}
}
LogCat:
07-03 00:21:38.253: E/AndroidRuntime(27831): FATAL EXCEPTION: main
07-03 00:21:38.253: E/AndroidRuntime(27831): java.lang.NullPointerException
07-03 00:21:38.253: E/AndroidRuntime(27831): at akshat.jaiswal.newshelf.TopStoriesFragment$MyCustomAdapter.getView(TopStoriesFragment.java:129)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.AbsListView.obtainView(AbsListView.java:2207)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.ListView.measureHeightOfChildren(ListView.java:1250)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.ListView.onMeasure(ListView.java:1162)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.LinearLayout.measureVertical(LinearLayout.java:698)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1451)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.LinearLayout.measureVertical(LinearLayout.java:850)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-03 00:21:38.253: E/AndroidRuntime(27831): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2191)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2165)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1249)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1443)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4879)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.Choreographer.doCallbacks(Choreographer.java:579)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.Choreographer.doFrame(Choreographer.java:548)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.os.Handler.handleCallback(Handler.java:725)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.os.Handler.dispatchMessage(Handler.java:92)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.os.Looper.loop(Looper.java:153)
07-03 00:21:38.253: E/AndroidRuntime(27831): at android.app.ActivityThread.main(ActivityThread.java:5297)
07-03 00:21:38.253: E/AndroidRuntime(27831): at java.lang.reflect.Method.invokeNative(Native Method)
07-03 00:21:38.253: E/AndroidRuntime(27831): at java.lang.reflect.Method.invoke(Method.java:511)
07-03 00:21:38.253: E/AndroidRuntime(27831): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
07-03 00:21:38.253: E/AndroidRuntime(27831): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-03 00:21:38.253: E/AndroidRuntime(27831): at dalvik.system.NativeStart.main(Native Method)
Row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:background="@android:color/darker_gray"
android:orientation="vertical">
<TextView
android:id="@+id/listtitle"
android:layout_marginTop="1dp"
android:layout_width="fill_parent"
android:textAppearance="@android:style/TextAppearance.Medium"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/listpubdate"
android:layout_marginBottom="1dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Small"/>
</LinearLayout>
最佳答案
您尚未初始化在 getView()
中使用的 inflater
成员变量。
使用例如inflater = LayoutInflater.from(context)
来初始化它。
关于java - 布局充气机上的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24538957/
我刚接触 C 语言几周,所以对它还很陌生。 我见过这样的事情 * (variable-name) = -* (variable-name) 在讲义中,但它到底会做什么?它会否定所指向的值吗? 最佳答案
我有一个指向内存地址的void 指针。然后,我做 int 指针 = void 指针 float 指针 = void 指针 然后,取消引用它们以获取值。 { int x = 25; vo
我正在与计算机控制的泵进行一些串行端口通信,我用来通信的 createfile 函数需要将 com 端口名称解析为 wchar_t 指针。 我也在使用 QT 创建一个表单并获取 com 端口名称作为
#include "stdio.h" #include "malloc.h" int main() { char*x=(char*)malloc(1024); *(x+2)=3; --
#include #include main() { int an_int; void *void_pointer = &an_int; double *double_ptr = void
对于每个时间步长,我都有一个二维矩阵 a[ix][iz],ix 从 0 到 nx-1 和 iz 从 0 到 nz-1。 为了组装所有时间步长的矩阵,我定义了一个长度为 nx*nz*nt 的 3D 指针
我有一个函数,它接受一个指向 char ** 的指针并用字符串填充它(我猜是一个字符串数组)。 *list_of_strings* 在函数内部分配内存。 char * *list_of_strings
我试图了解当涉及到字符和字符串时,内存分配是如何工作的。 我知道声明的数组的名称就像指向数组第一个元素的指针,但该数组将驻留在内存的堆栈中。 另一方面,当我们想要使用内存堆时,我们使用 malloc,
我有一个 C 语言的 .DLL 文件。该 DLL 中所有函数所需的主要结构具有以下形式。 typedef struct { char *snsAccessID; char *
指针, C语言的精髓 莫队先咕几天, 容我先讲完树剖 (因为后面树上的东西好多都要用树剖求 LCA). 什么是指针 保存变量地址的变量叫做指针. 这是大概的定义, 但是Defad认为
我得到了以下数组: let arr = [ { children: [ { children: [], current: tru
#include int main(void) { int i; int *ptr = (int *) malloc(5 * sizeof(int)); for (i=0;
我正在编写一个程序,它接受一个三位数整数并将其分成两个整数。 224 将变为 220 和 4。 114 将变为 110 和 4。 基本上,您可以使用模数来完成。我写了我认为应该工作的东西,编译器一直说
好吧,我对 C++ 很陌生,我确定这个问题已经在某个地方得到了回答,而且也很简单,但我似乎找不到答案.... 我有一个自定义数组类,我将其用作练习来尝试了解其工作原理,其定义如下: 标题: class
1) this 指针与其他指针有何不同?据我了解,指针指向堆中的内存。如果有指向它们的指针,这是否意味着对象总是在堆中构造? 2)我们可以在 move 构造函数或 move 赋值中窃取this指针吗?
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: C : pointer to struct in the struct definition 在我的初学者类
我有两个指向指针的结构指针 typedef struct Square { ... ... }Square; Square **s1; //Representing 2D array of say,
变量在内存中是如何定位的?我有这个代码 int w=1; int x=1; int y=1; int z=1; int main(int argc, char** argv) { printf
#include #include main() { char *q[]={"black","white","red"}; printf("%s",*q+3); getch()
我在“C”类中有以下函数 class C { template void Func1(int x); template void Func2(int x); }; template void
我是一名优秀的程序员,十分优秀!