在android中如何使用intent从外部类调用内部类?
我正在开发android应用程序,该应用程序的操作栏包含刷新按钮和溢出菜单,操作栏下方有两个堆叠的选项卡。当我单击“刷新”按钮时,将刷新该任务的各个选项卡,我想使用intent从外部类调用内部类,以便我可以从服务器刷新内部类。在android中如何使用intent从外部类调用内部类?,android,android-intent,Android,Android Intent,我正在开发android应用程序,该应用程序的操作栏包含刷新按钮和溢出菜单,操作栏下方有两个堆叠的选项卡。当我单击“刷新”按钮时,将刷新该任务的各个选项卡,我想使用intent从外部类调用内部类,以便我可以从服务器刷新内部类。当我尝试使用intent从外部类调用内部类时,我遇到了类似ActivityNotfound exception的异常,但我已经在中提到了内部类解决后显示。我试了很多方法,但都没有成功 下面是我的班级结构 public class Fragment extends Sherl
当我尝试使用intent从外部类调用内部类时,我遇到了类似ActivityNotfound exception的异常,但我已经在中提到了内部类解决后显示。我试了很多方法,但都没有成功
下面是我的班级结构
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
}
}
}
公共类片段扩展了SherlockFragmentActivity{
ActionBar ActionBar=getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
Tab=actionBar.newTab()。
setText(“Tab1”)。
SetTableListener(新选项卡1())
;
actionBar.addTab(tab);
tab=actionBar.newTab()。
setText(“Tab2”)。
SetTableListener(新选项卡2())
;
actionBar.addTab(tab);
//我尝试了很多方法来重新显示分词标签,但没有达到我的目标
公共无效刷新(){
/*我还在单个选项卡上编写刷新方法,并从
OnOptions项已选择但不工作*/
Intent href=新的Intent(Fragment.this,
表1.类别);
星触觉(href);
完成();
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.菜单\刷新:
刷新();
返回true;
违约:
打破
}
}
//tab-first的内部类
公共类Tab1扩展SherlockListFragment实现ActionBar.TablListener{
//在这里实现TabListener方法
//这里我正在从服务器加载列表
私有类LoadProjects扩展异步任务{
//呼叫网络服务
}
}
//tab second的内部类
公共类Tab2扩展SherlockListFragment实现ActionBar.TablListener{
//在这里实现TabListener方法
//这里我正在从服务器加载列表
私有类LoadProjects扩展异步任务{
//呼叫网络服务
}
}
}
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>
请任何人帮助我如何做上述任务。
提前感谢您应该在新文件中将Tab1设置为公共类,而不是内部类。这将解决Refresh()方法“未找到活动”异常。我可以问一下为什么要在这里使用
意图吗?我的意思是意图是用于启动或与活动通信的抽象/包装。一定要阅读这个概念,以便更好地了解片段如何与其宿主活动通信,反之亦然
在这种情况下,您可能需要在子片段中实现updateUI或refreshUI方法。单击刷新按钮,获取片段(按id或实例),并调用子对象的更新/刷新方法
有关详细信息,请参阅解决方案
快乐编码 您可以在您的活动\u上下文的帮助下刷新片段。recreate()
Tab1类不是活动,而是片段。startActivity方法仅适用于活动。片段是在FragmentManager的帮助下显示的。@Herrmann您对此有什么解决方案吗?我已经做过类似的工作,如果您需要示例代码,请告诉我。我已经在这里发布了完整的代码。请检查一下。希望它会有帮助。这可能也会有帮助。我不明白从第一个链接是什么,我应该写在刷新方法()。哦!很抱歉第一个链接是给你一个片段的开始,你应该知道一些基本的东西。出于好奇,你是不是在用碎片做实验,比如这是你第一次在应用程序中使用碎片?根据您的回答,我可能会为您指出一个安全的地方。是的,您的回答是正确的,这是我第一次使用fragment。谢谢!请阅读我添加的片段介绍(第一个链接)。作为一名开发人员,您应该意识到这一点。小结:就像Herrmann建议的那样,片段需要一个主机活动才能存在。将片段视为活动的一部分/部分,它有自己的生命周期,接收它自己的输入事件,并且在活动运行时可以添加或删除。坦克斯和雷恩。