Могут ли несколько объявлений Activity иметь одно и то же имя класса? - PullRequest
1 голос
/ 02 августа 2011

Например

<manifest>
    <activity android:label="MyActivity1" android:name=".MyClass">
    </activity>
    <activity android:label="MyActivity2" android:name=".MyClass">
    </activity>
</manifest>

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Да и нет.Когда вы добавляете имя Activity к ., он смотрит на пакет манифеста по умолчанию, чтобы получить полный путь к классу, например com.example.android.MyClass.Таким образом, если вместо этого у вас есть один .MyClass и другой com.example.android.other.MyClass, то это должно сработать.

<manifest>
  <package="com.example.android">
    <activity android:label="MyActivity1" android:name=".MyClass">
    </activity>
    <activity android:label="MyActivity2" android:name="com.example.android.other.MyClass">
    </activity>
</manifest>
1 голос
/ 02 августа 2011

Я не уверен на 100%, если это возможно, но, возможно, есть лучший способ сделать это. Если вам требуется одно и то же действие, вы можете вызывать его в обеих ситуациях, как обычно, но передавать данные также во время вызова. В вашем MyClass вы можете прочитать данные и решить, как с ними обращаться.

Пример: // Деятельность 1

    Intent i = new Intent(this, MyActivity.class);
    i.putExtra("open", "activity1data");
    startActivity(i);

// Деятельность 2

    Intent i = new Intent(this, MyActivity.class);
    i.putExtra("open", "activity2data");
    startActivity(i);

А в MyActivity сделать что-то подобное в onCreate ()

   Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    String action = intent.getAction();
    if(extras.containsKey("open")){
         if(extras.getString("open").equals("activity1data")){
              //DO activity 1 stuff
         }
    }

Это довольно грубый пример, вы можете использовать целые числа, включать их и т. Д. Но настоящая цель состоит в том, чтобы позволить одному виду деятельности обрабатывать различные случаи. Кажется, это то, что вы хотите, так как вы все равно собираетесь использовать один и тот же класс.

...