Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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 在片段、生命周期回调或接口中首先调用哪个_Java_Android_Android Fragments_Interface_Android Lifecycle - Fatal编程技术网

Java 在片段、生命周期回调或接口中首先调用哪个

Java 在片段、生命周期回调或接口中首先调用哪个,java,android,android-fragments,interface,android-lifecycle,Java,Android,Android Fragments,Interface,Android Lifecycle,有人能给我解释一下这个界面的行为吗?我有一个main活动,在其中我从名为ToggleInterface的接口实例化一个对象,ToggleInterface调用方法toggle.onMQTTConnectionPressed;在displaySelectionLayout方法中,情况0:如下所示,在代码2中 在运行时,当没有连接到服务器时,我单击项目编号1,然后单击项目编号0,我会收到下面发布的日志1。如果存在连接,我单击项目编号1,然后单击项目编号0,我将收到下面发布的日志2,但是,log.dT

有人能给我解释一下这个界面的行为吗?我有一个main活动,在其中我从名为ToggleInterface的接口实例化一个对象,ToggleInterface调用方法toggle.onMQTTConnectionPressed;在displaySelectionLayout方法中,情况0:如下所示,在代码2中

在运行时,当没有连接到服务器时,我单击项目编号1,然后单击项目编号0,我会收到下面发布的日志1。如果存在连接,我单击项目编号1,然后单击项目编号0,我将收到下面发布的日志2,但是,log.dTAG,debug消息;永远不要出现

为什么我在案例0中切换到片段:当没有连接时,首先调用@onMQTTConnectionPressed,然后调用onCreateView、onActivityCreated、onStart、onResume,然后再调用****和onMQTTConnectionPressed

为什么,当我在案例0中切换到片段时:当存在连接时,首先调用@onMQTTConnectionPressed,然后调用onCreateView、onActivityCreated、onStart、onResume,然后,***再次****、onMQTTConnectionPressed,但是Log.dTAG、debug消息;从未调用,尽管isModeViewVisible为true

注:

代码1:

代码2:

isModeViewVisible:

主要活动:

日志1:


MQTT_片段何时创建?另外,请添加isModeViewVisible如何工作的代码,说明还不够。@user3249477我添加了所需方法的代码。当用户单击NavigatioDrawer的listView中的第一项时,就会创建MQTT_片段。
`ModeViewVisible`: return the visibility state of the initial view, the one is wilbe returned from `onCretaeView`, or in other words, the `rootview` of the fragment.
@Override
public void onMQTTConnectionPressed() {
    // TODO Auto-generated method stub
    if ( (this.getMQTTAsynchClient() != null) && (this.getMQTTAsynchClient().isConnected()) ) {
        Log.d(TAG, "@onMQTTConnectionPressed(): client Connected");

        if (this.rootView == null) {
            Log.d(TAG, "@onMQTTConnectionPressed(): rootView = null");
        }
        if (isModeViewVisible()) {
            Log.d(TAG, "@onMQTTConnectionPressed(): ModeViewVisible = true");
            hideModeViews();
            Log.d(TAG, "debug message");
            //showSubscriptionViews();
        }
        if (isConfigViewVisible()) {
            Log.d(TAG, "@onMQTTConnectionPressed(): ConfigViewVisible = true");
        }

        if (isSubViewVisible()) {
            Log.d(TAG, "@onMQTTConnectionPressed(): subViewVisible = true");
        }
        //showSubscriptionViews();

    } else {

        Log.d(TAG, "@onMQTTConnectionPressed(): client not Connected");

        if (isModeViewVisible()) {

        } else if (isConfigViewVisible()) {
            hideMQTTConfigViews();
            showModeView();
            Log.d(TAG, "@onMQTTConnectionPressed(): returned to ModeView from MQTTConfigView.");
        }
    }
}
private void displaySelectionLayout(int position) {
    // TODO Auto-generated method stub
    Fragment fragment = null;
    boolean flag = false;

    switch (position) {

    case 0:
        //fragment = MQTT_Fragment;
        //flag = true;
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.frame_container, MQTT_Fragment).commit();
        navDrawerListView.setItemChecked(position, true); 
        navDrawerListView.setSelection(position);
        setTitle(navDrawerOptions[position]);
        navDrawerLayout.closeDrawer(navDrawerListView);
        toggle.onMQTTConnectionPressed();
        break;

    case 1:
        fragment = Eco_Fragment;

        Log.d(TAG, "@displaySelectionLayout: " + this.getNavDrawerArrayList().get(0).isOptionVisibile());
        break;

    case 2: fragment = Logger_Fragment;
        break;

    case 3: fragment = Exit_Fragment;
        break;

    default:
        break;
    }
    private boolean isModeViewVisible() {
    // TODO Auto-generated method stub
    if ( (rg_ConfigChoice != null) && (rg_ConfigChoice.getVisibility() == View.VISIBLE))
        return true;
    return false;
}
public class MainActivity extends Activity implements ItemVisibilityPasser {
....
....
private Fragment MQTT_Fragment = new MQTT_Fragment(); 
private Fragment Eco_Fragment = new Eco_Assistant_Fragment(); 
private Fragment Logger_Fragment = new Data_Logger_Fragment(); 
private Fragment Exit_Fragment = new Exit_Fragment(); 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    toggle =  (ToggleInterface) MQTT_Fragment; 
    initViews();

    if (savedInstanceState == null) {
        displaySelectionLayout(0);
    }
}
01-22 10:35:37.933: D/MQTT_Fragment(20534): @onMQTTConnectionPressed(): client not Connected
01-22 10:35:37.963: W/MQTT_Fragment(20534): @onCreateView()
01-22 10:35:37.963: W/MQTT_Fragment(20534): @onActivityCreated()
01-22 10:35:37.963: W/MQTT_Fragment(20534): @onStart()
01-22 10:35:37.963: W/MQTT_Fragment(20534): @onResume()
01-22 10:35:37.963: D/MQTT_Fragment(20534): @onResume(): NOT CONNECTED
01-22 10:35:37.963: D/MQTT_Fragment(20534): @onMQTTConnectionPressed(): ModeViewVisible = true

**Log_2**:

01-22 10:37:02.053: D/MQTT_Fragment(20534): @onMQTTConnectionPressed(): client Connected
01-22 10:37:02.083: W/MQTT_Fragment(20534): @onCreateView()
01-22 10:37:02.083: W/MQTT_Fragment(20534): @onActivityCreated()
01-22 10:37:02.093: W/MQTT_Fragment(20534): @onStart()
01-22 10:37:02.093: W/MQTT_Fragment(20534): @onResume()
01-22 10:37:02.093: D/MQTT_Fragment(20534): @onResume(): CONNECTED
01-22 10:37:02.093: D/MQTT_Fragment(20534): @onMQTTConnectionPressed(): ModeViewVisible = true