2012-09-21 140 views
0

我想创建一个简单的频率问问题的应用程序。第一个活动应该显示字符串数组“问题”中所有问题的列表视图。第二个活动应该在单击问题时打开,并从字符串数组“answers”中显示问题的答案。 (我遵循本指南passing data between activities。)Freq问题问题的应用程序

该程序编译并且不会在eclipse中显示任何错误,但是当我尝试运行它时,我总是收到“程序关闭”的错误。不确定是什么问题。

问题活动:

public class FreqActivity extends ListActivity { 

    String[] ans; 
    String[] questions; 
    View tempView = null; 

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

     ans = getResources().getStringArray(R.array.answers); 
     questions = getResources().getStringArray(R.array.questions); 

     setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(), 
       R.array.questions, R.layout.main)); 

    } 

    public void onListItemClick(ListView l, View v, int position, long id) { 
     //... 

} 
} 

logcat的错误:

09-21 20:21:31.722: D/dalvikvm(333): GC_EXTERNAL_ALLOC freed 51K, 53% free 2564K/5379K, external 2108K/2137K, paused 66ms 
09-21 20:21:31.792: E/ArrayAdapter(333): You must supply a resource ID for a TextView 
09-21 20:21:31.792: D/AndroidRuntime(333): Shutting down VM 
09-21 20:21:31.792: W/dalvikvm(333): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
09-21 20:21:31.913: E/AndroidRuntime(333): FATAL EXCEPTION: main 
09-21 20:21:31.913: E/AndroidRuntime(333): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.AbsListView.obtainView(AbsListView.java:1430) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.ListView.makeAndAddView(ListView.java:1745) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.ListView.fillDown(ListView.java:670) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.ListView.fillFromTop(ListView.java:727) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.ListView.layoutChildren(ListView.java:1598) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.AbsListView.onLayout(AbsListView.java:1260) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.view.View.layout(View.java:7175) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.view.View.layout(View.java:7175) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.view.View.layout(View.java:7175) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.view.View.layout(View.java:7175) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.view.ViewRoot.performTraversals(ViewRoot.java:1140) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.os.Looper.loop(Looper.java:123) 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.app.ActivityThread.main(ActivityThread.java:3683) 
09-21 20:21:31.913: E/AndroidRuntime(333): at java.lang.reflect.Method.invokeNative(Native Method) 
09-21 20:21:31.913: E/AndroidRuntime(333): at java.lang.reflect.Method.invoke(Method.java:507) 
09-21 20:21:31.913: E/AndroidRuntime(333): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
09-21 20:21:31.913: E/AndroidRuntime(333): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
09-21 20:21:31.913: E/AndroidRuntime(333): at dalvik.system.NativeStart.main(Native Method) 
09-21 20:21:31.913: E/AndroidRuntime(333): Caused by: java.lang.ClassCastException: android.widget.LinearLayout 
09-21 20:21:31.913: E/AndroidRuntime(333): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:340) 
09-21 20:21:31.913: E/AndroidRuntime(333): ... 26 more 
09-21 20:23:04.262: I/Process(333): Sending signal. PID: 333 SIG: 9 
+1

通过“在Eclipse中没有错误”,你是否也意味着logcat的是空白? '如果不是这样,它会很大程度上帮助您查看错误文本。 – Eric

+1

检查logcat的错误,并发布它 – petey

+0

也试图减少你正在粘贴的代码量,这是一个很大的数量... –

回答

0

线

setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(), 
       R.array.questions, R.layout.main)); 

应该

setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(), 
       R.array.questions, android.R.layout.simple_spinner_item)); 

Reference

+0

否。第一个活动使用main.xml并显示所有问题,第二个活动打开点击,并在文本视图中显示一个答案。它使用的布局文件是answers.xml – mdegges

+1

不,您应该在主要活动上设置setContentView(R.layout.main),您不会将R.layout.main作为textView的id传递,但我确实犯了一个错误,并且我在编辑我的答案。 – Michaeldcooney

+0

main.xml中没有textview,它是一个listview。请看代码。 – mdegges