2015-07-24 4 views
3

Мне нужно выполнить onClick, чтобы вызвать метод onItemSelected для прослушивания другого класса. Я не знаю, как вызвать этот метод в кнопке Image onClick listener. Так что он переместится в класс HomeFirstFragment.onClick to call interface method from MainActivity

ItmeSelectedListener

public interface ItemSelectedListener { 

    public void onItemSelected(final int position, final String content); 
} 

LayoutActivity.java:

public class LayoutActivity extends Activity implements OnClickListener { 

ImageButton btn_click; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_grid3); 

     btn_click = (ImageButton) findViewById(R.id.btn_click); 

    } 
    @Override 
    public void onClick(View v) { 

     switch (v.getId()) { 

      case R.id.btn_click: 


      break; 
     } 
    } 

} 

MainActivity.java:

public class MainActivity extends ActionBarActivity implements OnTabChangeListener,ItemSelectedListener { 

private TextView action_bar_hometext; 


@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

} 

@Override 
    public void onItemSelected(int position, String content) 
    { 

     if(position==0) 
     { 
      action_bar_hometext.setText(content); 
      FragmentManager manager = getSupportFragmentManager(); 
      FragmentTransaction ft = manager.beginTransaction(); 
      HomeFirstFragment newFragment = new HomeFirstFragment(); 
      ft.replace(R.id.realtabcontent, newFragment); 
      ft.addToBackStack(null); 
      ft.commit(); 
     } 
    } 

Если я нажму на btn_click в классе LayoutActivity, мне нужно выполнить метод onClick для вызова метода MainActivity.

Любой может помочь мне с этим. Благодарю вас.

ответ

2

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

Создать свой интерфейс, как

Interface MyListener{ 
    public void myClickListener(String content); 
} 

Теперь осуществить это в MainActivity

public class MainActivity extends ActionBarActivity implements OnTabChangeListener,ItemSelectedListener,MyListener { 
    public void myClickListener(String content){ 
     action_bar_hometext.setText(content); 
     FragmentManager manager = getSupportFragmentManager(); 
     FragmentTransaction ft = manager.beginTransaction(); 
     HomeFirstFragment newFragment = new HomeFirstFragment(); 
     ft.replace(R.id.realtabcontent, newFragment); 
     ft.addToBackStack(null); 
     ft.commit(); 
    } 
} 
+0

, пожалуйста, проверьте мой вопрос еще раз. Мне нужно вызвать слушателя в LayoutActivity.Что-то я пробовал до сих пор, как это. 'ItemSelectedListener list; дело R.id. btn_flight: list.onItemSelected (0, «Сведения о рейсе»); break; 'но это не сработало для меня. – Steve

1

Вы должны зарегистрировать свой MainActivity класс в LayoutActivity классе, так что LayoutActivity класс может вызвать метод интерфейса.

Добавьте это в LayoutActivity.java:

private static ItemSelectedListener mListener = null; 

public static void register(ItemSelectedListener listener){ 
    mListener = listener; 
} 

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 

     case R.id.btn_click: 
      if(mListener!=null){ 
       // ADD THIS LINE 
       mListener.onItemSelected(POS/*Your position*/, CONTENT/*Your content*/); 
      } 

     break; 
    } 
} 

Теперь в вашем MainActivity классе, зарегистрировать его в LayoutActivity класса и следующим образом:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    LayoutActivity.register(this); 
} 

Надеется, что это помогает! :)

+0

Когда я нажимаю кнопку изображения, она не работает. Но ошибки во время выполнения – Steve

+0

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

+0

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

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