2013-02-18 2 views
0

Я занимаюсь разработкой приложения, содержащим 2 мероприятия:Как начать андроид деятельность, не показывая основную деятельность в задних

  1. Основной деятельность начала, где пользователь запускает приложение.

  2. Второе действие запускается, когда пользователь нажимает на кнопку-виджет на главном экране.

Я создал свой виджет и представление, которое будет отображаться, когда пользователь нажмет на кнопку виджетов.

Моя проблема: Второй активный пользовательский интерфейс отображается над основным видом деятельности, основная активность видна, потому что второй макет действия прозрачен, потому что я хочу, чтобы домашний экран все еще был видимым при щелчке в виджетах.

Как я могу запустить только второе действие без запуска основного действия под ним? Я попытался удалить <action android:name="android.intent.action.MAIN" /> в основном действии из файла манифеста, виджет работает, но когда я устанавливаю свое приложение в телефоне, значок приложения не установлен, поэтому я не могу запустить основное действие.

Я надеюсь, что я выразил свою проблему.

+0

Пробовал ли вы вызов finish() для первого действия после запуска нового действия? –

+0

, если вы не знаете ансвара, пожалуйста, не голосуйте ни на какие вопросы. –

ответ

0

я решил моя проблема так:

1- я добавил к основному виду деятельности атрибутов в файле манифеста:

android:launchMode="singleTask" 

Я проверил это не делает время загрузки при повторном запуске деятельности больше чем обычно, потому что этот атрибут не стирает кеш приложения и сохраняет экземпляр намерения в памяти.

2- Добавьте к этому основному классу деятельности:

@Override 
void onPause() 
    { 
    super.onPause(); 
    finish(); 
    } 

Спасибо всем за вашу помощь.

1

Вы должны закончить первую Activity сразу после запуска второго Activity

startActivity(<secondActivity>); 
finish(); 
+0

Спасибо, но я не могу этого сделать, потому что я lannch второй активности от виджета не от основного действия, поэтому я не могу получить доступ к основному объект acivity, чтобы закончить его.любая идея, как я могу это сделать? – Meher

0

Вы можете либо закончить свою основную деятельность после того, как вы начнете свою вторую активность:

startActivity(secondActivity.class); 
finish(); 

Или в вашем приложении манифест, вы можете использовать флаг noHistory в своем основном действии, поэтому он вызывает завершение, когда вы перемещаетесь от него.

android:noHistory="true" 
+0

Танк, я ищу это, я также нашел, что могу сделать это, добавив андроид: launchMode = "singleTask" к моим свойствам активности, что является лучшим решением? если я использую android: noHistory = "true", то андроид никогда не будет хранить данные кэша памяти приложения, чтобы он мог время загрузки приложения увеличиваться дольше каждый раз? – Meher

+0

noHistory просто сделает это так, когда будет запущена mainActivity, когда вы выйдете из нее (либо закрыв ее, либо перейдя на новую активность), она будет завершена. Имеет ли это негативные последствия для вашего кеша, я не уверен, вам нужно будет изучить его. singleTask завершит другие действия в стеке, поэтому он, вероятно, будет иметь тот же эффект. –

0

Возможно, у вас будет другой фильтр действия и намерения, связанный со вторым действием. Посмотрите на documentation. Пример приложения к блокноту должен быть похож на то, что нужно делать.

+0

У меня уже есть разные намерения и фильтры для двух видов деятельности. – Meher

+0

Затем вы можете просто вызвать вторую активность напрямую, используя свой фильтр намерений. Вы можете сделать это, используя вызов метода Intent.setData() ', чтобы передать uri, с которым может справиться ваше второе действие. Вот несколько [документации] (http://developer.android.com/training/basics/intents/sending.html), которые могут вам помочь. – ebarrenechea

Смежные вопросы