1

Androidで最初のリストアダプターを作成しようとしていますが、リストが表示されますが、アイテムをクリックしても何も起こりません。私の唯一の推測は、Class cvar を定義する行の後にあるコメントです。

package scouting.form;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Menu extends ListActivity{

    String classes[] = {"SCOUTING","LOGIN","MAIN"};

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(Menu.this,android.R.layout.simple_list_item_1,classes));
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position,long id)
    {
        super.onListItemClick(l, v, position, id);
        String cheese= "com.cody.graham."+classes[position];
        try{
            Class cvar=Class.forName(cheese);     //Eclipse has a warning on this line "Class is a raw type. References to generic type Class<T> should be parameterized". I don't really know what that means.
            Intent intention=new Intent(Menu.this,cvar);
            startActivity(intention);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
    }
}

編集:

AndroidManifest の一部:

<activity android:name=".splash_screen" android:label="@string/title_activity_splash" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name=".Login" android:label="@string/title_activity_login" android:exported="false">
    <intent-filter>
        <action android:name="com.cody.graham.LOGIN" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

<activity android:name=".Scouting" android:label="@string/title_activity_scouting" android:exported="false">
    <intent-filter>
        <action android:name="com.cody.graham.SCOUTING" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
4

2 に答える 2

3
  String classes[] = {"SCOUTING","LOGIN","MAIN"};

クラスに表示される名前を付けてみてください。お気に入りScouting

また、マニフェストを変更しようとしています:

<activity android:name=".Scouting" />
これは、この場合にのみ必要なものです。

Eclipse には、この行に「クラスは生の型です。ジェネリック型クラスへの参照はパラメーター化する必要があります」という警告があります。これは警告です。この場合、エラーにはなりません。つまり Class 、 T は取得するクラスの型です。元:

Class<? extends Activity> cvar=Class.forName(cheese);

詳細については:リンク

于 2012-11-08T23:20:50.560 に答える
1

まず、<intent-filter>マニフェストから と の両方のセクションを.Scouting削除します.Login( .splash_screen).いい練習。Activity<intent-filter>

次に、wtsang02 が提案するように実行し、クラスの文字列配列を次のように変更します...

String classes[] = {"Scouting","Login","splash_screen"};

また、他のActivityクラス (Scouting など) が と同じパッケージにあると仮定してMenu、この行を変更します...

String cheese= "com.cody.graham."+classes[position];

することが...

String cheese= "scouting.form." +classes[position];

...そして、日食の警告を取り除くために、この行...

Class cvar=Class.forName(cheese);

...に...

Class<?> cvar=Class.forName(cheese);
于 2012-11-09T00:27:17.117 に答える