1

別のパッケージでアクティビティを呼び出すことに関する他の投稿をいくつか読んでいますが、正しく実行しているように見えますが、メインのアクティビティからまだこのエラーが発生しています:

AndroidTestProj1/src/com/testing/androidtest/TestProj1Activity.java:7: error: package com.testing.androidtest2 does not exist

マニフェストで他のアクティビティを宣言しましたが、まだ見つかりません。

====================================

ここに AndroidTestProj1 があります: AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.testing.androidtest"
  android:versionCode="1"
  android:versionName="1.0">
<application android:label="@string/app_name" >
   <activity android:name="TestProj1Activity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
<activity
        android:name="com.testing.androidtest2.TestProj2Activity"
        android:label="@string/app2_name" >
    </activity>
</application>

および AndroidTestProj1/src/com/testing/androidtest/TestProj1Activity.java:

    package com.testing.androidtest;

import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;

import com.testing.androidtest2.TestProj2Activity;

public class TestProj1Activity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    // do some stuff here then call other package activity

    Intent i = new Intent(this, TestProj2Activity.class);
    startActivity(i);
    }
}

ここに AndroidTestProj2 があります: AndroidManifest.xml:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.testing.androidtest2"
  android:versionCode="1"
  android:versionName="1.0">
<application android:label="@string/app_name" >
    <activity android:name="TestProj2Activity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

および AndroidTestProj2/src/com/testing/androidtest2/TestProj2Activity.java:

package com.testing.androidtest2;

import android.app.Activity;
import android.os.Bundle;

import com.testing.androidtest2.Helper;

public class TestProj2Activity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    private boolean somekeyvalue = Helper.getSomeKeyValue();

    // do stuff with keyvalue

}

AndroidTestProj2/src/com/testing/androidtest2/Helper.java:

package com.testing.androidtest2;

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class Helper {

    private static final String SOMEKEY = "somekey";

    private static SharedPreferences prefs;

        public static void init(Context context)
        {
                prefs = PreferenceManager.getDefaultSharedPreferences(context);
                initialize();
        }

        private static void initialize()
        {
                SharedPreferences.Editor editor = prefs.edit();

                if (!prefs.contains(SOMEKEY)) editor.putBoolean(SOMEKEY, false);

                editor.commit();
        }

        public static boolean getSomeKeyValue()
        {
                return prefs.getBoolean(SOMEKEY, true);
        }

}
4

2 に答える 2

1

これは、通常のシナリオで行うのと同じことですが、少し微調整します。FirstActivity で、他のパッケージから他のアクティビティを呼び出したい場合は、次のコードを入力します

コード

Intent i = new Intent(); 

i.setClassName("com.CodeArt.finalactivity", "com.CodeArt.finalactivity.FinalActivity");

startActivity(i);

これcom.CodeArt.finalactivityはパッケージ名であり、com.CodeArt.finalactivity.FinalActivity完全なクラス名です。

次に、FirstActivity の AndroidManifest.xml に移動し、 activity android:name=”com.CodeArt.finalactivity.FinalActivityアプリケーション タグに次の行を追加します。

それはうまくいきます。

于 2013-09-19T19:24:40.843 に答える
0

単なる仮定ですが、現在のプロジェクトに 2 番目のプロジェクトを既に追加していますか? そうしないと、マニフェストでクラスを宣言しても、そのクラスに到達できません。ここで確認できることを達成する方法を知るには

于 2013-09-19T20:34:24.960 に答える