2016-08-18 2 views
0

Переходя от действия к другому с намерением, как я могу получить имя загрузчика класса? Мне нужно имя загрузчика классов. Если мои намерения не были ясны, ознакомьтесь с этими кодами.Получить намерение загрузчика классов. Я хочу установить текст textView в secondActivity для имени firstActivity (на самом деле мне нужно имя загрузчика класса)

Я создал тестовое приложение для этого вопроса. Он имеет три вида деятельности. ActivityA, ActivityB и ActivityC. У меня есть кнопка в ActivityA и ActivityB, которые запускают ActivityC.

ActivityA:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_a); 

     Button btnGoFromActivityAToActivityC = (Button) findViewById(R.id.btnGoFromActivityAToActivityC); 

     btnGoFromActivityAToActivityC.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(ActivityA.this, ActivityC.class); 
       startActivity(intent); 

      } 
     }); 
    } 

ActivityB:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_b); 

     Button btnGoFromActivityBToActivityC = (Button) findViewById(R.id.btnGoFromActivityBToActivityC); 

     btnGoFromActivityBToActivityC.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(ActivityB.this, ActivityC.class); 
       startActivity(intent); 

      } 
     }); 
    } 

ActivityC:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_c); 

     TextView textViewNameOfFirstActivity = (TextView) findViewById(R.id.textViewNameOfFirstActivity); 

    if (/* if we came from ActivityA */) 
    { 
     textViewNameOfFirstActivity.setText("You came from ActivityA"); 
    } 

    else if (/* if we came from ActivityB */) 
    { 
     textViewNameOfFirstActivity.setText("You came from ActivityB"); 
    } 
    } 

Посмотрите на ActivityC ...

Как я могу это сделать?

ответ

2

ClassLoader не собирается сообщать вам, что загрузило ваш Activity; это для loading Classes.

Лучшим подходом было бы отправить какую-либо информацию в Activity C, которая сообщит, кто ее открыл. например

активность A:

Intent intent = new Intent(ActivityA.this, ActivityC.class); 
intent.putExtra("from", "Activity A"); 
startActivity(intent); 

И тогда в вашем onCreate(Bundle) методе Activity C вы получите это значение:

@Override 
public void onCreate(Bundle savedInstance){ 
    .... 

    String fromActivity = getIntent().getStringExtra("from"); 

    textViewNameOfFirstActivity.setText(fromActivity); 
} 
+0

Ну на самом деле это хорошая идея .. но, как вы знаете, намерение будет выполненных внутри класса. Я имею в виду, когда вы нажимаете кнопку, сначала открывается класс, а затем выполняется замысел. Таким образом, намерение определяется в этом классе. ** Мой вопрос: ** Как я могу проверить, является ли имя класса * (которое вызывается) * равным классу A, а затем sth? – MostafaUTD

+1

@MostafaUTD Это правильный подход. Вы либо используете неправильные слова, либо не понимаете, как это работает. Нажатие на кнопку не «открывает класс», она ** вызывает метод на экземпляре класса **. «Intent» не «выполняет». «Intent» - это просто контейнер данных, например «сообщение». Когда вы вызываете 'startActivity()', вы даете платформе Android «Intent» и говорите «находите« Activity », который может обрабатывать этот« Intent »и запускать его для меня, пожалуйста». Android не предоставляет встроенный способ определить, какой компонент называется startActivity(). –

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

  • Нет связанных вопросов^_^