4

私はAndroidプロジェクトを持っています。次に、そのプロジェクトの第2版を作成する必要があります。

何が違うのか:

プロジェクトの新版では、アクティビティの1つに異なるコンテンツが含まれている必要があります。

project1ライブラリプロジェクトと、ライブラリプロジェクトを使用する2つの新しいプロジェクト(および)を作成することを考えていましたproject2が、これを設定する方法がよくわかりません。

元のプロジェクトをライブラリに変換してから、2つの新しいプロジェクトを作成してから、何をする必要がありますか?同じ場所で使用するproject1方法activity1project2使用する方法は?activity2

編集

これまでに設定したもの:

MainProject、ライブラリにはMainActivity.javaとChildActivity.javaがあります


AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mainproject">
    <application>
        <activity
            android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ChildActivity">
        </activity>
    </application>
</manifest>

MainActivity.java

   public class MainActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {

            ((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(MainActivity.this, ChildActivity.class);
                    startActivity(intent);
                }
            });
        }
}

StandAloneProject: ChildActivity.javaのみがあります


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.standaloneproject">
    <application>
        <activity
             android:name="com.example.mainproject.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ChildActivity" >
        </activity>
    </application>
</manifest>

私が期待すること:

StandAloneProjectを起動してボタンをクリックすると、(MainProjectからではなく)StandAloneProjectからChildActivityが起動されます。

私が得るもの:

StandAloneProjectを起動すると、MainProjectからMainActivityが表示され、ボタンをクリックして次の情報を取得します。

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.standaloneproject/com.example.mainproject.ChildActivity}; have you declared this activity in your AndroidManifest.xml?
4

3 に答える 3

5

問題は、MainActivity.javaで子アクティビティを開始する方法です。正しいChildActivityが開始されていることを「手動で」確認する必要があります。

これを行う1つの方法は、インテントのコンポーネントを明示的に設定することです。Context.getPackageName()関数は、実行しているアプリケーションのパッケージ名を返します。これを使用して、開始するChildActivityの「正しいインスタンス」を識別できます。MainActivity.java のonClick()ハンドラーでこれを試してください。

    Intent intent = new Intent();       
    intent.setComponent(new ComponentName(getPackageName(), getPackageName() + ".ChildActivity"));
    startActivity(intent);
于 2012-10-18T09:16:00.460 に答える
3

あなたのアプローチは正しいものです。

  1. ライブラリプロジェクトを作成します。
  2. 新しいプロジェクトを作成し、必要なアクティビティを作成して、それにライブラリプロジェクトを追加します。
  3. AndroidManifest.xmlをライブラリプロジェクトから新しいプロジェクトにコピーしますが、ライブラリプロジェクトのアクティビティではなく、プロジェクトのアクティビティとは異なるアクティビティを指定します。
于 2012-07-27T08:17:19.903 に答える
1

あなたは正しい方向に進んでいます。ライブラリプロジェクトと、libプロジェクトを含む2つの標準のAndroidプロジェクトを設定します。マニフェストアクティビティを新しいプロジェクトにコピーすることを忘れないでください。アクティビティを分離したい場合は、libプロジェクトからアクティビティを拡張できます。プロジェクト1:MyActivtyはActivit1を拡張します..プロジェクト2 MyActivit

于 2012-07-27T08:22:26.333 に答える