【问题标题】:android listview setadapter crashandroid listview setadapter 崩溃
【发布时间】:2014-05-27 16:15:52
【问题描述】:

我是 android 新手,我正在尝试在列表视图上显示一个数组 这是我设置列表视图的 xml:

<ListView
        android:id="@+id/lv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

这里是 MainActivity.java:

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
    ListView listView ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView lv = (ListView) findViewById(R.id.lv);
        String[] values = new String[] { "Elemento 1", 
                                         "Elemento 2",
                                         "Elemento 3",
                                         "Elemento 4", 
                                         "Elemento 5", 
                                         "Elemento 6", 
                                         "Elemento 7", 
                                         "Elemento 8" 
                                        };

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
          android.R.id.text1, values);
        lv.setAdapter(adapter); 

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


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    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;
        }
    }

}

所以,问题是,一切都很顺利,直到我写下:

    lv.setAdapter(adapter); 

我运行应用程序,但它只是崩溃,应用程序已停止。当我评论这部分代码时,它运行但显然没有显示任何内容。我在平板电脑上运行它,它在 ICS 上

提前致谢。

【问题讨论】:

  • 您的代码中有两个 listview 变量,您确定您使用的是正确的吗?
  • 我猜 listview 属于 fragment_main.xml 而你得到的是 NullPointerException
  • 如果是,那么可能是您的布局没有提供 Id 的列表视图
  • 您的列表视图在活动 xml 或片段主文件中的什么位置?
  • 这个 id 在哪里属于 R.id.lv 在 activity_main 或 fragment_main 中?

标签: java android eclipse listview arraylist


【解决方案1】:

替换这一行:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
      android.R.id.text1, values);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, values);

【讨论】:

  • 嗯,我以前也是这样的,不行,发现有人说这样会更好,所以改了,还是不行
  • 不幸的是应用程序已停止,这是由于空指针异常。但我会修复它。
  • 对不起,感谢 Dev Carlsberg。我会修复它,我没有意识到我会将列表视图放在我的 fragment_main.xml 文件中。我有 setContentView(R.layout.activity_main);这意味着 listview 应该是的正确布局是 activity_main.xml 所以我只需删除 从 fragment_main.xml 文件中并将其放入 activity_main.xml 并完美运行。再次感谢
【解决方案2】:

对不起,感谢 Dev Carlsberg。我会修复它,我没有意识到我会将列表视图放在我的 fragment_main.xml 文件中。我有:

setContentView(R.layout.activity_main); 

这意味着列表视图的正确布局应该是activity_main.xml,所以我只需删除:

<ListView android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="wrap_content"/>

来自fragment_main.xml 文件并将其放入activity_main.xml 并完美运行。 再次感谢。

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多