2

ListActivity から拡張された Menu という名前のクラスに、次のコードがあります。listitem をクリックすると、Toast 行が正しく実行されますが、その後何も起こりません。catch ブロックのコードが実行され、その Intent 部分が何らかの例外をスローしていると思います。この定義に問題はありますか?

protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    try {
        Toast.makeText(Menu.this, "Clicked!!", 5000).show();
        Class myClass = Class.forName("com.palye.first.MainActivity");
        Intent menuI = new Intent(Menu.this, myClass);
        startActivity(menuI);
    }
    catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

}
4

4 に答える 4

1

時々

    Class myClass = Class.forName("com.example.first.MainActivity");

クラスをロードしないため、十分ではありません。私は作る必要がありmyClass.newInstance()ます; myClass作成したオブジェクトを使用していない場合でも、を使用します。

それを試してみてください、多分それはあなたの問題を解決するでしょう。

于 2012-12-28T15:02:26.150 に答える
1

アクティビティを所有している場合は、明示的なインテントを作成できます。

 Intent intent = new Intent(Menu.this, MainActivity.class);

try catchその後、どちらも必要ありません

于 2012-12-28T16:27:59.887 に答える
0

どこかで、いくつかのパッケージ名がロード、デプロイから除外されているのを見ましたが、どれを忘れましたか。私が覚えているように、1つは「アンドロイド」で、もう1つは「内部」または「例」です。私は iOS / Android / Java EE を切り替えたり混ぜたりしているので、どこが許可されていないのか、どれが許可されていないのかわかりません。

example" my" パッケージを " "に名前変更/リファクタリングしてみてください。解決するかもしれません。Android マーケットの場合、「example」を使用して展開することは許可されていません

于 2012-12-28T16:11:50.763 に答える
0

MainActivity.class代わりに試してみませんか?例えば、Intent menuI = new Intent(Menu.this, MainActivity.class);

logcat の出力を投稿できますか?

于 2012-12-28T16:24:27.697 に答える