我有活动A和TabHost.我的TabHost有2个标签.第一个选项卡包含活动B,第二个选项卡包含活动C.

活动A有一个菜单.活动B和C没有任何菜单.当我点击Activity AI时可以打开它的菜单但是当我点击其中一个标签时,A的菜单没有显示.这意味着活动B或C被激活,我无法访问A的菜单.
如何拥有此TabHost,如何才能访问A的菜单或其他资源?
我正在尝试让我的应用从标签1更改为标签3.标签位于自定义TabsPagerAdapter中extends FragmentPagerAdapter.
我试图更改标签喜欢这个,但它导致NullPointerException.机制是不同的FragmentPagerAdapter?
TabHost host = (TabHost) getActivity().findViewById(android.R.id.tabhost);
host.setCurrentTab(2);
Run Code Online (Sandbox Code Playgroud) java android android-tabhost android-fragments fragmentpageradapter
如何从TabActivity或TabHost获取特定的活动?
我试过TabHost.getChildAt(),但View实例无法转换为Activity实例.
或者你如何得到一个在后台运行的Activity?
永远不会调用我的onActivityResult方法.我正在使用android 2.2
我正在使用Tabhost,其中TabHosts包含包含单个活动的TabGroup.
我的一项个人活动运行以下意图
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), 0);
Run Code Online (Sandbox Code Playgroud)
这加载我的画廊应用程序,我使用默认的Android库选择一个图像,当我返回我的onActivityResult时,不称为我的活动.
它看起来像这样 - 我给了一个断点if(resultCode == 0),所以现在,我的onActivityResult的逻辑应该不重要
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == 0) {
if (requestCode == 0) {
Uri selectedImageUri = data.getData();
//OI FILE Manager
filemanagerstring = selectedImageUri.getPath();
//MEDIA GALLERY
selectedImagePath = getPath(selectedImageUri);
//DEBUG PURPOSE - you can delete this if you want
if(selectedImagePath!=null)
System.out.println(selectedImagePath);
else System.out.println("selectedImagePath is null");
if(filemanagerstring!=null)
System.out.println(filemanagerstring);
else System.out.println("filemanagerstring is null");
//NOW …Run Code Online (Sandbox Code Playgroud) 我使用以下方法检查是否单击了选项卡:
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
public void onTabChanged(String tabId) {
int i = tabHost.getCurrentTab();
if (i == 2) {
Log.i("Tab Number", "=" + i);
testFields(); // Verifies that the data fields were filled.
}
}
});
Run Code Online (Sandbox Code Playgroud)
当我检查字段是否正确时,我有一个测试"if or else".
如果一切都完成了,好的!
如果没有,则无法关注下一个标签.必须保持标签"数据"才能完成填充.
如何阻止标签中的更改?一切都正确吗?
编辑以显示测试帮助
final TabHost tabHost = (TabHost) getParent().findViewById(
android.R.id.tabhost);
// ONCLICK TABHOST
for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) {
tabHost.getChildAt(i).setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_UP) …Run Code Online (Sandbox Code Playgroud) 我正在努力解决在我的自定义Activity类中没有调用.onWindowFocusChanged()的问题.我的设置:
TabHost中的两个选项卡(包含Activity_1和Activity_2),默认情况下选择第二个选项卡:
tabHost.setCurrentTab(currentTabIndex);
Run Code Online (Sandbox Code Playgroud)
在这两个活动中,我添加了onWindowFocusChanged()覆盖(因为我需要在布局完成绘图后预先形成计算):
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
}
Run Code Online (Sandbox Code Playgroud)
问题:默认情况下选择第二个选项卡,然后单击第一个选项卡,onWindowFocusChanged()永远不会在Activity_1中调用(与第一个选项卡关联).两个活动都扩展了普通的Activity类.
如何解决这个问题的任何线索将不胜感激!
我正在尝试更改TabWidget文本颜色,但没有成功,即使我尝试了不同的方式来更改它(请参阅下面的代码.)
我的背景标签是一张图片:
for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) {
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
}
Run Code Online (Sandbox Code Playgroud)
我不知道这是否与我现在想做的事情产生某种冲突.
解决方法1:
main.xml中
....
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tabbarbackground"
android:tabStripEnabled="false"
style="@style/TabText"
/> ....
Run Code Online (Sandbox Code Playgroud)
style.xml
... <style name="TabText">
<item name="android:textColor">@color/tab_text_color</item> </style> ....
Run Code Online (Sandbox Code Playgroud)
tab_text_color.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:textColor="#2daed9" />
<item android:state_selected="false" android:color="#FFFFFF" />
</selector>
Run Code Online (Sandbox Code Playgroud)
解决方案2
for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) {
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
RelativeLayout rl = (RelativeLayout) tabHost.getTabWidget().getChildAt(i);
TextView textView = (TextView) rl.getChildAt(1);
textView.setTextColor(R.color.tab_text_color);
}
Run Code Online (Sandbox Code Playgroud)
tab_text_color.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:textColor="#2daed9" /> …Run Code Online (Sandbox Code Playgroud) 我在哪里可以找到TabHost的好例子?我发现了很多例子但是所有这些例子都被弃用或者不起作用.
即使它出现在Eclipse图形编辑器中,我的TabWidget也不会显示.我找不到任何理由.为什么我的标签栏没有显示?
日食

模拟器

活动的XML源:http://pastebin.com/Au9XFXPa
从活动中提取:
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>
Run Code Online (Sandbox Code Playgroud)
Android lint的结果:
$ lint.bat res/layout/activity_calculator.xml
Scanning Catalyst: .
No issues found.
Run Code Online (Sandbox Code Playgroud) 单击DialogFragment中的按钮后,我想切换到标签号3.我该怎么办?
android ×10
android-tabhost ×10
gallery ×1
java ×1
layout ×1
lifecycle ×1
menu ×1
onclick ×1
overriding ×1
tabcontrol ×1
testing ×1
textview ×1