0

OnCreate() でオブジェクトを初期化する LaunchActivity にクラスがあります。 LaunchActivity のボタンをクリックすると、 MainActivity が作成されます。MainActivity の LaunchActivity で作成されたインスタンス オブジェクトにアクセスしようとしています。

これはLaunchActivityです

LaunchActivity extends Activity
{
    public static ABConnection abcConnection;
  protected void onCreate(Bundle savedInstanceState) {
abcConnection = new ABConnection(this);
}

public void Button_Click(View v)
{
 Intent myintent=new Intent(LaunchPage.this,MainActivity.class);
        startActivity(myintent);
}

だから私はこのように MainActivity でコンストラクターを作成しています、

プライベート LaunchPage ローンチページ。

public MainActivity(LaunchPage launchpage)
    {
        this.launchpage=launchpage;
    }

そして、MainActivityのインスタンスオブジェクトにアクセスしようとしていますLaunchPage.Object.Method.

しかし、実行時に次のエラーが発生します-Caused by: java.lang.IllegalStateException: Unable to get package info for com.example.XXX; パッケージがインストールされていませんか?

4

1 に答える 1

1

MainActivity の LaunchActivity で作成されたインスタンス オブジェクトにアクセスしようとしています。

には「インスタンス オブジェクト」がありませんLaunchActivity。に静的データ メンバーがありLaunchActivityます。

LaunchActivityfromで定義された静的データ メンバーにアクセスするにはMainActivity、単純に を使用しますLaunchActivity.nameOfYourStaticDataMember。この場合、それは になりますLaunchActivity.abcConnection

この場合、静的データ メンバーを使用するのはおそらく賢明ではありません。 の実装によってはABConnection、特に のインスタンスでメモリ リークが発生する可能性があるためですLaunchActivity

だから私はこのように MainActivity でコンストラクターを作成しています

そのコンストラクターは不要であり、アプリの動作を妨げます。削除してください。

于 2013-10-07T17:03:13.430 に答える