5

作成した Android アクティビティのpublic static void main(String[] args)メソッド内で実行して、 Android アクティビティのプライベート メソッドを調べたいと思います。

私はEclipse ADTを使用しており、 ActivityJava アプリケーションとして実行する単純なアプローチにより、次の結果が得られました。

Java ランタイム環境によって致命的なエラーが検出されました:
内部エラー (classFileParser.cpp:3174)、pid=2936、tid=2980
エラー: ShouldNotReachHere()

そのため、実行構成を調べたところ、 Android 3.1がClasspathのBootstrap Entriesセクションの唯一のエントリであることがわかりました。JREBootstrap Entriesにもあるように、プロジェクトのビルドパスを構成することができました。次に、 Android 3.1エントリを削除し、android.jarUser Entriesに追加しました。

実行構成を実行した結果は、RuntimeException です。

スレッド「メイン」での例外 java.lang.RuntimeException: Stub!
android.content.Context.(Context.java:4) で

一部のテストを実行する代わりに、 JUnitテストを起動することもできます。しかし、プライベート メソッドの場合、これは面倒です。

Android Activity クラスのメイン メソッドを正常に実行する方法はありますか?

4

3 に答える 3

4

privateメインメソッドの実行を通じて調べる必要があるメソッドを別のクラスに抽出できる場合、当面の問題には別のオプションがあります。もちろん、これはメソッドが突然 少なくとも になったことを意味しprotectedます。

ただし、メソッドがandroid.app.Activityから派生していないクラス内で定義されている場合は、メイン メソッドを定義できます。Eclipseで実行構成を調整するだけです。

  1. Run as Java Applicationでクラスを実行します。これにより、クラスのような名前の新しい実行構成が生成されます
  2. 新しく作成した実行構成を編集します
  3. [クラスパス] タブのBootstrap EntriesからAndroidライブラリを削除します。
  4. プロジェクトのビルドパスにJRE 6程度を追加
  5. この JRE を[ Classpath ] タブのBootstrap Entriesに追加します。
  6. [クラスパス] タブの[ユーザー エントリ]で、 Android SDKのプラットフォームディレクトリにあるandroid.jarを追加します。
于 2012-06-05T13:09:28.147 に答える
2

アクティビティは Android の観点から非常に重要です。アクティビティのライフサイクルは、アクティビティのライフサイクルを通じて OS によって処理されるいくつかのメソッドのコレクションです。

public void onCreate(Bundle savedBunldeInstance)

アクティビティを作成するアプリが起動されるとすぐに呼び出されます。これは、Android のアプリケーションのエントリ ポイントです。compiled 2 timesAndroid アプリを実行するには、エミュレーターまたは物理デバイスが必要です。ファイルは ですjava compiler then by dalvik compiler

DVM (Dalvik Virtual Machine)は Android デバイス (エミュレーターまたは物理) にあります。これが、それを実行するためにエミュレーターまたは物理デバイスが必要な理由です..そして、onCreate がそのエントリ ポイントです。

あなたのリクエストに応じて、私はこの投稿を編集して追加の情報を加えています. 以下の行は、http://developer.android.com/から抜粋したものです。

 Android applications don't have a single entry point.
 (there's no main() function, for example).

詳細については、これをクリックしてください。

http://developer.android.com/guide/topics/fundamentals.html
于 2012-06-03T19:38:37.260 に答える
0

メイン メソッドは、Java のように Android のエントリ ポイントではありません。あなたはオーバーライドしたい

public void onCreate(Bundle savedBunldeInstance) method.
于 2012-06-03T07:55:42.757 に答える