2012-11-07 34 views
1

我有這樣的代碼:活動加載了,但不顯示出來

ListView listView; 
static final String[] Liste = {"Satz des Pythagoras", "abc-Formel", "pq-Formel"}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    setTitle("CalcPlus"); 
    listView = getListView(); 
    //Own row layout 
    listView.setAdapter(new ArrayAdapter<String>(this, 
       R.layout.activity_home, Liste)); 
    listView.setOnItemClickListener(this); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_home, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.maths: 
      return true; 
     case R.id.physics: 
      Intent myIntent2 = new Intent(Home.this, ActivityPhysics.class); 
      startActivity(myIntent2); 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 
public void onItemClick(AdapterView<?> adapter, View view, 
      int position, long id) { 
    if ("Satz des Pythagoras".equals(Liste[position])) { 
     Intent sdp = new Intent(view.getContext(), MainActivity.class); 
     startActivityForResult(sdp, 0); 
    } 
    else if ("abc-Formel".equals(Liste[position])) { 
     Intent abc = new Intent(view.getContext(), ActivityABC.class); 
     startActivityForResult(abc, 0); 
    } 
    else if ("pq-Formel".equals(Liste[position])) { 
     Intent pq = new Intent(view.getContext(), ActivityPQ.class); 
     startActivityForResult(pq, 0); 
    } 
} 

這應該顯示一個列表和動作條。它有一段時間了。

它看起來像我搞砸了代碼,因爲我沒有那麼多的經驗,找不到我的錯誤...所以有人可以查看我的代碼? :)

因爲現在它加載activity..but不顯示列表或動作條:○

這裏是\菜單中的XML \ activity_home.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/menu_settings" 
    android:orderInCategory="100" 
    android:showAsAction="never" /> 
<item android:id="@+id/maths" 
    android:title="@string/maths" 
    android:orderInCategory="1" 
    android:showAsAction="always|withText" 
    android:titleCondensed="@string/maths" 
    android:icon="@drawable/ic_action_calculator" /> 
<item android:id="@+id/physics" 
    android:icon="@drawable/ic_action_line_chart" 
    android:title="@string/physics" 
    android:orderInCategory="2" 
    android:showAsAction="always|withText"/> 

這是佈局\ activity_home.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="@string/hello_world"/> 

</RelativeLayout> 

所以基本上它是空的。

+0

您是否收到錯誤?或者只是這些項目不顯示?登錄貓怎麼樣? –

+0

你嘗試刪除'listView = getListView();'? –

+0

Log Cat不顯示任何紅色條目。 那麼,有時我會強制關閉,我重新啓動程序,它工作正常。我想不通,什麼是錯的.. 刪除的ListView並沒有改變什麼:( – Lesik2008

回答

1

有了這兩條線:

setContentView(R.layout.activity_home); 
... 
listView.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.activity_home, Liste)); 

您正在使用的整個活動和每行,這沒有任何意義相同的佈局。該活動的佈局應包含ListView和不應該行佈局...


要使用默認的佈局,刪除此行:

setContentView(R.layout.activity_home); 

並改變這一個:

listView.setAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, Liste)); 

此外你需要onListItemClick()onItemClick()有行點擊工作。

@Override 
protected void onListItemClick (ListView l, View v, int position, long id) {...} 

好了,現在在logcat中唯一的條目是數組適配器:「你musst提供一個資源ID爲一個TextView

你必須給你的TextView一個id:

<TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="@string/hello_world"/> 

並將您創建適配器的方式更改爲:

listView.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.activity_home, R.id.text, Liste)); 
+0

我刪除了其他線路,我得到27行錯誤,那就是: listView.setAdapter(新ArrayAdapter (對此, \t \t \t \t \t R.layout.activity_home,清單當然)); listView.setOnItemClickListener(本); – Lesik2008

+0

是的,你需要行'的Li​​stView = getListView();''否則是listView''null'。 .. – Sam

+0

menu-xml有一個菜單xmls和3個項目 layout-xml有一個相對的佈局xmlns和一個textview。 – Lesik2008

2

如果您使用的是ListActivity,你R.layout.activity_home必須有這樣一個ListView:

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

然後你就可以在你的適配器或使用創建的列表視圖項目的新佈局列表項的預定義佈局,如:

listView.setAdapter(new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_1, Liste)); 
+0

我也可以使用我原來的activity_home嗎?因爲我不想要一些東西否則顯示,但列表(以及操作欄)。 – Lesik2008

+0

@ Lesik2008是的,如果您使用activity_home作爲列表視圖項目,那麼您將刪除'setContentView(R.layout.activity_home);'來自Sam的帖子中提到的ListActivity。 –

相關問題