Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onClick从MainActivity调用接口方法_Java_Android_Interface - Fatal编程技术网

Java onClick从MainActivity调用接口方法

Java onClick从MainActivity调用接口方法,java,android,interface,Java,Android,Interface,我需要执行onClick来调用另一个类的onItemSelected listener方法。我不知道如何在Image button onClick listener中调用该方法。这样它将移动到HomeFirstFragment类 itmselectedlistener public interface ItemSelectedListener { public void onItemSelected(final int position, final String content);

我需要执行onClick来调用另一个类的onItemSelected listener方法。我不知道如何在Image button onClick listener中调用该方法。这样它将移动到HomeFirstFragment类

itmselectedlistener

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;
        }
    }

}
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();
        }
     }
MainActivity.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;
        }
    }

}
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();
        }
     }
如果我在LayoutActivity类中单击btn_click,我需要从MainActivity执行onClick调用接口方法


任何人都可以帮我。谢谢。

您可以创建自己的侦听器,并添加要在自己的侦听器中单击执行的代码块

创建像这样的界面

Interface MyListener{
    public void myClickListener(String content);
}
现在在您的主要活动中实现这一点

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();
    }
}

您需要在
LayoutActivity
类中注册
MainActivity
类,以便
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);
}

希望有帮助!:)

请再检查一次我的问题。我需要给LayoutActivity中的听众打电话。到目前为止我一直在这样做<代码>项目SelectedListener列表;案例R.id。btn_航班:列表。已选择(0,“航班详细信息”);中断但它对我不起作用。当我单击图像按钮时,它不起作用。但运行时没有错误添加适当的日志。您的MainActivity可能根本没有创建,因此不会注册。在所有接口相关部分添加日志语句。此外,除了让它工作外,我希望您了解接口的工作原理和使用方法。:)我不要日志。我希望您添加更多日志语句并跟踪问题。我已经测试了这段代码,它可以正常工作。如果mListener为null,则表示在调用MainActivity之前正在运行LayoutActivity。这段代码应该work@Richard我不认为你的主要活动被创造出来了!你能告诉我你想完成的事情的顺序吗。比如你的应用程序如何启动以及它应该做什么。