【问题标题】:Can not see the onResume method in an activity在活动中看不到 onResume 方法
【发布时间】:2012-08-14 11:17:17
【问题描述】:

我有一个活动,我在其中创建选项卡,每个选项卡对应一个活动

我创建标签的活动:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ActionBar bar = getSupportActionBar();

        // requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        Resources res = getResources();
        LocalActivityManager mlam = new LocalActivityManager(this, false);
        final TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
        mlam.dispatchCreate(savedInstanceState);
        tabHost.setup(mlam);
        TabHost.TabSpec spec;
        Intent intent;

        // TabHost tabHost = getTabHost();
        // tabHost.setup();

        TabSpec specAll = tabHost.newTabSpec("All");
        specAll.setIndicator("All");
        Intent allIntent = new Intent(this, allActivity.class);
        specAll.setContent(allIntent);

        // specAll.setContent(R.id.allList);

        Log.d("SpecAll", "" + specAll.setContent(allIntent));

        TabSpec specIn = tabHost.newTabSpec("in");
        specIn.setIndicator("In");
        Intent inIntent = new Intent(this, inActivity.class);
        specIn.setContent(inIntent);

        TabSpec specOut = tabHost.newTabSpec("Out");
        specOut.setIndicator("Out");
        Intent outIntent = new Intent(this, outActivity.class);
        specOut.setContent(outIntent);

        // Adding all TabSpec to TabHost
        tabHost.addTab(specAll); // Adding all tab
        tabHost.addTab(specIn); // Adding in tab
        tabHost.addTab(specOut); // Adding out tab

        tabHost.setOnTabChangedListener(new OnTabChangeListener() {

            @Override
            public void onTabChanged(String tabId) {

                int i = tabHost.getCurrentTab();
                // Log.i("@@@@@@@@ ANN CLICK TAB NUMBER", "------" + i);

                if (i == 0) {
                    Log.d("TAB", "" + i);

                } else if (i == 1) {
                    Log.d("TAB", "" + i);
                } else
                    Log.d("TAB", "" + i);
            }
        });

    }

我需要知道为什么当我调用选项卡的活动时,为什么我不能进入 OnResume() 方法。 我只能在 OnCreate 和 onStart 上输入。 在下面的代码中,onResume 中的 Log.d 永远不会显示。

一个标签的活动:

ProgressDialog pDialog;
EfficientAdapter adap;
Databasehandler db;

ArrayList<Message> menuItems = new ArrayList<Message>();
int current_page = 0;
int index = 0;
int limit = 0;

private static final int TYPE_MO = 0;
private static final int TYPE_MT = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.all);

}



@Override
public void onStart() {
    super.onStart();

    db = new Databasehandler(this);
    List<Message> messages;
    messages = db.getMessages(0, 5);
    index += 5;
    limit = limit + 5;

    for (Message mg : messages) {
        // Log.d("mpika",mg.getBody());
        menuItems.add(new Message(mg.getID(), mg.getPhoneNumber(), mg
                .getBody(), mg.getStatus(), mg.getIsMO(), mg.getDate()));

    }

    adap = new EfficientAdapter(this, menuItems);

    ListView lv = (ListView) findViewById(R.id.listall);

    // Creating a button - Load More
    Button btnLoadMore = new Button(this);
    btnLoadMore.setText("Load More");

    // Adding button to listview at footer
    lv.addFooterView(btnLoadMore);

    lv.setAdapter(adap);
    btnLoadMore.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // Starting a new async task
            // CharSequence text = "Ok dude you pressed me ";
            // Toast toast = Toast.makeText(getApplicationContext(), text,
            // Toast.LENGTH_SHORT);
            // toast.show();
            new loadMoreListView().execute();
        }
    });
    db.close();

}


@Override
public void onResume()
{
    super.onResume();
    Log.d("OnResume", "inside onResume");
}

【问题讨论】:

  • 从ddms的设备列表中选择设备,然后尝试查看logcat

标签: android android-activity tabs adapter onresume


【解决方案1】:

那是不可能的,当所有控件映射后,活动获得焦点时将调用onResume(),这是不可避免的。

在 Logcat 中查看,您没有查询某些文本,并且必须在过滤器选项中选择 Verbose 选项

【讨论】:

  • 好吧,我看不到和 OnPause
  • 它是 null 并且从第一个地方选择了详细我在 onCreate 和 onStart 中尝试了一些日志,我看到了它们。我发布的第一个代码有没有可能出错?
【解决方案2】:

TabActivityonResume()的activity不会调用。

【讨论】:

  • 如果活动不会在 tabhost 中调用 onresume(),那么我们如何在更改选项卡时保存 UI 状态。在这里查看我的问题stackoverflow.com/questions/13832888/… 看看我的代码一次。我正面临在 onpause() 中保存按钮状态并将它们反映在 onresume() 中的问题。
【解决方案3】:

正如您在 Activity 生命周期中看到的:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle,onResume() 是自动的,并且 总是 在 onCreate() 和 onStart() 之后调用。

现在,我想我已经找到了与此答案相关的解决方案:

Android OnResume not called when using TabHost and LocalActivityManager

你必须用第二个参数true来初始化mlam:mlam = new LocalActivityManager(this, true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2014-04-13
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    相关资源
    最近更新 更多