2012-02-13 2 views
3

Я хочу получить имя вызывающей активности для проверки некоторых условий. Каким будет решение?Как получить название вызывающей деятельности?

+0

называющаяся деятельность есть? –

+1

activity.class.getName() ??? если вы вызываете другое действие из активности, вы можете указать его имя в Bundle, а затем запустить Intent. –

+0

Я правильно понял ответы на этот вопрос, что я (как деятельность или услуга) не могу узнать, кто (деятельность или услуга) хочет использовать меня без сотрудничества вызывающего? – k3b

ответ

3

Вы можете передавать данные между различными видами деятельности, используя Bundle

Посмотрите на этот пример: http://www.balistupa.com/blog/2009/08/passing-data-or-parameter-to-another-activity-android/

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

Bundle bundle = new Bundle(); 
bundle.putString(this.class.getName(), “ClassName”); 

Intent newIntent = new Intent(this.getApplicationContext(), ActivityClass2.class); 
newIntent.putExtras(bundle); 
startActivityForResult(newIntent, 0); 

И в ActivityClass2 вы можете прочитать этот параметр, используя:

Bundle bundle = this.getIntent().getExtras(); 
String className = bundle.getString(“ClassName″); 
5

Я думаю, что вы можете достичь этого даже с getCallingActivity().getClassName()

1

Шаг1: Создать свой Интерфейс-> правой кнопки вашего project-> New-> JavaClass-> Kind = Интерфейс

public interface ActivityConstants { 
    public static final int NameFromTheFirstActivity = 1001; 
    public static final int NameFromTheSecondActivity = 1002; 
    public static final int NameFromTheThirdActivity = 1003; 
} 

Шаг2: В каждую деятельность (Activity1 или Activity2 или Activity3), когда вы создаете свое намерение вызвать ActivityFromWhereYouWantChooseTheAction (называемое ActivityChooseAction), вам нужно добавить дополнительные функции ... В Activity1 напишите:

Intent intent = new Intent(getApplicationContext(), ActivityChooseAction.class); 
        intent.putExtra("calling-activity", ActivityConstants.NameFromTheFirstActivity); 
        startActivity(intent); 

В деятельности2 написать это:

Intent intent = new Intent(getApplicationContext(), ActivityChooseAction.class); 
        intent.putExtra("calling-activity", ActivityConstants.NameFromTheSecondActivity); 
        startActivity(intent); 

В Activity3 написать это:

Intent intent = new Intent(getApplicationContext(), ActivityChooseAction.class); 
       intent.putExtra("calling-activity", ActivityConstants.NameFromTheThirdActivity); 
       startActivity(intent); 

После того, как вы можете пойти в ваш ActivityChooseAction и написать это:

Public class ActivityChooseAction...{ 
String parametersharedtouseinthisactivity=""; 
... 
... 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activitychooseaction_layout); 
    mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE); 
    int callingActivity = getIntent().getIntExtra("calling-activity", 0); 

     switch (callingActivity) { 
      case ActivityConstants.NameFromTheFirstActivity: 
//write your parameter....if u have saved it into preferences you can do like 
parametersharedtouseinthisactivity = mPreferences.getString("nameparameter", defaultvalueyouwant); 
       break; 
      case ActivityConstants.NameFromTheSecondActivity: 
parametersharedtouseinthisactivity = mPreferences.getString("nameparameter", defaultvalueyouwant); 
       break; 
      case ActivityConstants.NameFromTheThridActivity: 
parametersharedtouseinthisactivity = mPreferences.getString("nameparameter", defaultvalueyouwant); 
       break; 
     } 
} 

Я надеюсь, что это может помочь кому-то, я следил за тем, что пользователь здесь сказал: how to know the calling activity in android

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