2014-09-08 2 views
0

Как проверить, запущено ли действие по умолчанию или метод Activity вызывается из намерения другого действия? Я думаю, что на данный момент мой код очень плохо, потому что я справиться с этим над Try/Вылов Он отлично работает, но я хочу, лучший кодПроверьте, запущено ли намерение или активность запущена по умолчанию

public class MyScan extends Activity { 
public final static String EXTRA_MESSAGE = ".MESSAGE"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    checkIntent(); 
} 

public void checkIntent() { 
    try { 
     Intent i = getIntent(); 
     String method_name = i.getStringExtra("method_name");// is firing an error if there is no intent call 
     if (method_name.equals("scanBarcode")) { 
      scanBarcode2();// That starts my method 
     } 
    } catch (Exception e) { 
     setContentView(R.layout.activity_my_scan); // that shows just my Content 
    } 

} 
.... 

Thanky Вам за подсказку Alex Terreaux

я таким образом, изменил код

public void checkIntent() { 
    Intent i = getIntent(); 
    if (i != null) { 
     String method_name = i.getStringExtra("method_name"); 
     if (method_name != null && method_name.equals("scanBarcode")) { 
      scanBarcode2(); 
     } else { 
      setContentView(R.layout.activity_my_scan); 
     } 
    } 
} 

и что-то работает.

ответ

1

Попробуйте проверить, не найден ли результат getIntent().

+0

Вы имеете в виду, как если (я! = NULL) –

+0

закрыты, но не сигары, потому что если (я! = NULL) верно, но вы меня в правильном направлении, увидеть в моем первоначально темах –

+0

Да, это то, что я имел ввиду. Рад, что я помог. –

2

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

<string name="starting_from_intent">STARTING_FROM_INTENT</string> 

В файле, где вы начинаете деятельность намеренно вы можете использовать:

intent.putExtra(getString(R.string.starting_from_intent), 1); 

Затем в checkIntent(), сделайте следующее:

boolean startedFromIntent; 

Intent i = getIntent(); 
if (i.getIntExtra(getString(R.string.starting_from_intent), 0) == null 
|| i.getIntExtra(getString(R.string.starting_from_intent), 0) == 0) 
    startedFromIntent = false; 

else 
    startedFromIntent = true; 

Надеюсь, это было не слишком сложно понять и надеяться, что это поможет.

+0

Извините, я случайно отправил два ответа. Надеюсь, что это более подробно. Я не собирался публиковать другой ответ ... –

+0

Нет пота. Спасибо, очень полезно. –

0

Когда ваша активность была запущена с помощью метода startActivity(), метод getCallingActivity() в целевой активности возвращает null.

Когда он был вызван startActivityForResult(), он вернет имя вызывающей активности.