【问题标题】:Whats wrong with my code? Android simple list view example [closed]我的代码有什么问题? Android简单列表视图示例[关闭]
【发布时间】:2014-07-28 06:47:49
【问题描述】:

我正在从字符串数组创建简单的列表视图。我看了很多教程都说同样的只有 3 行足以让它工作。我也在做同样的事情,但仍然得到 NPE,几乎对这个问题感到沮丧。无法弄清楚出了什么问题,请帮助我。

我的代码在这里:

主要

   <uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="18" />

MainActivity.java

public class MainActivity extends Activity {
    ListView lv;
    String[] days = new String[] { "Sunday", "Monday", "Tuesday",
        "Wednesday", "Thursday", "Friday"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.listView1);

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, days);
        lv.setAdapter(adapter);
    }

    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }
}

【问题讨论】:

  • 然后发布你的 logcat...
  • 你知道吗,当有人问关于 NPE 或 ANR 的问题时,没有 logcat 会让人们感到沮丧
  • NPE的行号是多少?
  • 你的列表视图在你的片段中吗?
  • 这个问题似乎是题外话,因为它是关于一个未包含在问题中的错误。

标签: java android listview


【解决方案1】:

嘿,你错了配置代码。在这里,您将 listview 放在片段 xml 中并在 mainactivity 类中编写代码,因此您必须删除片段 xml 并将片段 xml 代码替换为 mainactivity xml 并删除以下代码

if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }

来自 onCreate()

只需在 Fragment 类的 OnCreateView 中初始化你的 Listview

public static class PlaceholderFragment extends Fragment {
    ListView lv;
String[] days = new String[] { "Sunday", "Monday", "Tuesday",
    "Wednesday", "Thursday", "Friday"};

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);
            lv = (ListView) view.findViewById(R.id.listView1);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(GetActivity(),
            android.R.layout.simple_list_item_1, days);

            lv.setAdapter(adapter);
        return rootView;
    }
}

就是这样……

【讨论】:

  • 谢谢大家!它现在可以工作了:-)
【解决方案2】:

改变

setContentView(R.layout.activity_main);

setContentView(R.layout.fragment_main);

【讨论】:

    【解决方案3】:

    您在活动中显示的新片段。

    if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
    }
    

    但 listview 是在主活动布局中声明的。 因此,要查看您的列表视图,只需评论上面的代码并查看。

    【讨论】:

      【解决方案4】:

      您需要将“String[] days”中的项目添加到“适配器”中,您可以使用方法 adapter.add 或 adapter.addAll 将项目添加到 ArrayAdapter。有关更多详细信息,这里是简单 listView 的示例

      http://windrealm.org/tutorials/android/android-listview.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 2021-10-22
        • 2013-02-11
        • 1970-01-01
        • 2023-04-01
        相关资源
        最近更新 更多