1

ListAdapter の悪夢を見る。ListView をインスタンス化する方法に関するすべてのコードを読みました。私は間違いなく有効な TextView の ID を ListView.Adaptor に渡しています。

これで、コードは正常に実行され、LoadAllStats() 関数と周囲の trycatchfinally を正常に終了します。その後、予期しない停止 -> 強制終了ダイアログですべてが爆発します。

Logcat は、スローされた例外が ResourcesNotFoundException であることを示しています。テキストビューが無効であると主張していますが、それは間違いなくテキストビューであり、他のコントロールで正常に使用されているテキストビューでテストしたので、ここで何が起こっているのかわかりません.

何か案は?(Androidフォンを壊す前に?)

ありがとう。

namespace Project
{    
    [Activity(Label="History")]
    public class HistoryFileDialog : Activity
    {
        ListView ItemList;
        ADatabase<Stats> Database;
        List<Stats> History;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.HistoryWnd);

            ItemList = FindViewById<ListView>(Resource.Id.ListView);
            ItemList.ItemClick += new EventHandler<AdapterView.ItemClickEventArgs>    (ItemList_ItemClick);

        ItemList = FindViewById<ListView>(Resource.Id.ListView);

        string Path = Globals._SDROOT + Globals._PROFILEDIR + "user" + "//progress.profile";
        LoadAllStats(Path);
    }

    private void LoadAllStats(string HistoryDBasePath)
    {
        this.Database = new ADatabase<Stats>(this.ApplicationContext,
            HistoryDBasePath);

        List<Stats> All = Database.ReadAll();
        this.History = new List<Stats>(All.Count);

        string[] Test = new string[] { "work", "you", "goddamn", "list", "adapter" };

        try
        {
   // just some test data for the adaptor.
            ItemList.Adapter = new ArrayAdapter<String>(this, Resource.Id.Output, Test);
        }
        catch (Exception e)
        {
            string Foo = e.StackTrace;
        }
    }
}

}

Full Logcat = 
12-30 02:01:56.948: E/AndroidRuntime(16400): FATAL EXCEPTION: main
12-30 02:01:56.948: E/AndroidRuntime(16400): android.content.res.Resources$NotFoundException: Resource ID #0x7f050026 type #0x12 is not valid
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:1892)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.content.res.Resources.getLayout(Resources.java:740)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.AbsListView.obtainView(AbsListView.java:1430)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.ListView.measureHeightOfChildren(ListView.java:1307)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.ListView.onMeasure(ListView.java:1127)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.View.measure(View.java:8510)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3202)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.View.measure(View.java:8510)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3202)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.View.measure(View.java:8510)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.View.measure(View.java:8510)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3202)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.View.measure(View.java:8510)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.ViewRoot.performTraversals(ViewRoot.java:871)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1939)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.os.Looper.loop(Looper.java:143)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at android.app.ActivityThread.main(ActivityThread.java:4196)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at java.lang.reflect.Method.invokeNative(Native Method)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at java.lang.reflect.Method.invoke(Method.java:507)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-30 02:01:56.948: E/AndroidRuntime(16400):    at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

1

私の推測は次のいずれかです。

  • レイアウトIDの代わりに識別子IDを使用していること

または

  • resourceid ファイルが java ファイルと何らかの形で同期していないことを確認してください。

最初のものをテストするには、次のようなコンストラクターを使用するように ArrayAdapter を変更してみてください。

        new ArrayAdapter<string>(this, Resource.Layout.list_item, Test);

2番目をテストするには...

すべてを再構築してみたり、生成されたリソース デザイナーの cs ファイルを削除してみたり、さらにコントロールを追加してみたり、コンパイラーを怒鳴ったりしてみてください。

于 2012-12-30T14:27:33.033 に答える