如何在android中使用intent从外部类调用内部类?

时间:2013-07-29 07:05:26

标签: android android-intent

我正在开发Android应用程序和应用程序,操作栏包含刷新按钮和溢出菜单,下面的操作栏有两个堆叠标签。当我点击刷新按钮时,单个选项卡将刷新为该任务我想使用intent从外部类调用内部类,所以我可以从服务器刷新内部类。

当我尝试调用内部类时从外部类使用intent我遇到了像ActivityNotfound异常这样的异常,但是我已经解决后在manifest中提到了内部类。我尝试了很多但没有奏效。

以下是我的班级结构

public class Fragment extends SherlockFragmentActivity {
    ActionBar actionBar = getSupportActionBar();

    actionBar.setDisplayHomeAsUpEnabled(false);

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    Tab tab = actionBar.newTab().
            setText("Tab1").
            setTabListener(new Tab1())
            ;
    actionBar.addTab(tab);

    tab = actionBar.newTab().
            setText("Tab2").
            setTabListener(new Tab2())
            ;
    actionBar.addTab(tab);

    //I am tried number ways to refesh the particlar tab but not achieve my goal
    public void Refresh() {

        /* I am also write Refresh method on individual tab and call from 
        onOptionsItemSelected but not working*/

        Intent href = new Intent(Fragment.this,
                Tab1.class);  
        startActivity(href);
        finish();
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case R.id.menu_refresh:
            Refresh();
            return true;
        default:
            break;
        }
    }
    //inner class for tab first 
    public class Tab1 extends SherlockListFragment implements ActionBar.TabListener{

        // here implementating the TabListener method

        //here I am loading the list from server
        private class LoadProjects extends AsyncTask<String, String, String> {
            //call webservice
        }
    } 

    // inner class for tab second
    public class Tab2 extends SherlockListFragment implements ActionBar.TabListener{

        // here implementating the TabListener method

        //here I am loading the list from server

        private class LoadProjects extends AsyncTask<String, String, String> {
            //call webservice
        }
    } 
}

的AndroidManifest.xml

<application>
        <activity
            android:name="com.ojaswitech.bookingscape.Fragment"
            android:configChanges="orientation|keyboardHidden"
            android:label=""
            android:logo="@drawable/action_bar_logo"
            android:theme="@style/Theme.New_theme_bs" >
        </activity>
        <activity
            android:name="com.ojaswitech.bookingscape.Fragment$Tab1"
            android:configChanges="orientation|keyboardHidden" >
        </activity>
        <activity
            android:name="com.ojaswitech.bookingscape.Fragment$Tab2"
            android:configChanges="orientation|keyboardHidden" />
    </application>

请有人帮我怎么做以上任务。 提前致谢

3 个答案:

答案 0 :(得分:0)

你应该在新文件中使 Tab1 成为公共类,而不是内部类。这将解决Refresh()方法“未找到活动”异常。

答案 1 :(得分:0)

我可以问你为什么要在这里使用Intents?我的意思是意图是用于启动或与活动进行通信的抽象/包装器。请阅读Fragment概念,以便更好地了解碎片如何与其主机活动进行通信,反之亦然。

在这种情况下,您可能需要在子片段中实现updateUI或refreshUI方法。单击刷新按钮,获取您的片段(通过id或实例)并调用子级的更新/刷新方法。

请参阅How to refresh fragment tab content on button click

的解决方案

快乐的编码!

答案 2 :(得分:0)

您可以在your_activity_context.recreate()

的帮助下刷新您的片段