ListActivity显示白屏

时间:2017-06-01 22:47:38

标签: android

您好我尝试在Android文档之后使用此代码创建一个简单的listActivity:

public class AddProductChoices extends ListActivity {

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

    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.addProductChoices));
    setListAdapter(adapter);

  }

  @Override
  protected void onListItemClick(ListView l, View v, int position, long id) {
    Toast.makeText(this, "Option Selected " + position, Toast.LENGTH_LONG);
  }
}

R.layout.add_product_choices:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="es.infofly.apps.gestcomprasnav.activities.AddProductChoices">

<TextView
    android:id="@android:id/empty"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="No data" />

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="visible"/>
</LinearLayout>

的strings.xml:

<resources>
  <array name="addProductChoices">
    <item>Opcion 1</item>
    <item>Opcion 2</item>
    <item>Opcion 3</item>
    <item>Opcion 4</item>
  </array>
</resources>

但我得到的只是一个白色的屏幕。 我尝试直接使用数组作为测试而不是获取字符串,xml具有相同的结果。 谁能告诉我我错过了什么?感谢

1 个答案:

答案 0 :(得分:0)

问题是在manifest.xml中我将活动的主题称为对话框:

<activity
      android:name=".activities.AddProductChoices"
      android:label="@string/add_product_choices"
      android:theme="@style/Base.Theme.AppCompat.Dialog" />

如果我尝试使用对话框主题显示白色屏幕,如果我使用通常的大小(主题,所有屏幕)顺利。所以我使用常规的AppCompatActivity并正常使用ListView:

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

    ListView choices = (ListView) findViewById(R.id.lv_choices);

    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.addProductChoices));
    choices.setAdapter(adapter);

    choices.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent resultChoice = new Intent();
            resultChoice.putExtra("choice", position);
            setResult(RESULT_OK, resultChoice);
            finish();
        }
    });