我正在开发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>
请有人帮我怎么做以上任务。 提前致谢
答案 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()