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

これにより、リストとアクションバーが表示されます。しばらくの間、そうしました。

コードをめちゃくちゃにしたようですが、あまり経験がないので間違いを見つけることができません...誰かが私のコードをレビューできますか?:)

これでアクティビティが読み込まれますが、リストやアクションバーは表示されません:o

\ menu\activity_home.xmlの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"/>

これはlayout\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>

つまり、基本的には空です。

4

2 に答える 2

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));
于 2012-11-07T23:10:46.047 に答える
1

これらの2行で:

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の唯一のエントリはArrayAdapterです:"テキストビューのリソースIDを指定する必要があります。

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));
于 2012-11-07T22:54:12.913 に答える