我对Android和Java相当新,并且遇到了上下文问题 - 我在另一个TabWidget中的TabWidget中有一个Spinner,而在代码方面我有一个TabActivity的主类,我将特定选项卡的意图设置为另一个TabActivity,其中我将选项卡的意图设置为Activity,我将内容视图设置为我拥有我的Spinner的布局(希望这是有意义的)。无论何时我点击微调器并尝试启动微调器的对话框,它都会给我一个错误的令牌错误。从我读过的,这是因为我的微调器有错误的上下文,但因为我没有主动设置我的上下文(我用XML创建了微调器),我似乎无法找到方法或公开的属性来设置旋转器的背景......你明白了,尽管读了其他人类似的问题,但我还是迷失了。这是我的代码:
主:
public class Star_Android_Activity extends TabActivity
{
public static void main(String[] args) {
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, Pick_Activity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("pick").setIndicator(LinearLayout.inflate(this,R.layout.tab_header_pick, null))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
子标签:
public class Pick_Activity extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pick);
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Reusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
intent = new Intent().setClass(this, Pending_Activity.class);
spec = tabHost.newTabSpec("pending").setIndicator(LinearLayout.inflate(this,R.layout.tab_header_pending, null))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
儿童活动:
public class Pending_Activity extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.pending);
addSpinnerValues();
}
public void addSpinnerValues()
{
Spinner spn = (Spinner)findViewById(R.id.spnPick);
List<String> list = new ArrayList<String>();
list.add("list 1");
list.add("list 2");
list.add("list 3");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spn.setAdapter(dataAdapter);
}
}
Main和and Pick的xml文件基本上是hello tabwidget教程的副本,而pending.xml只是一个包含几个按钮和我的微调器的FrameLayout。我可以发布代码,如果它有帮助,但我有问题发布任何代码(可能是字符限制)。
如何正确设置我的上下文的任何帮助(以及一个小的解释,如果它不是一个麻烦)将不胜感激!
答案 0 :(得分:3)
我花了一段时间,但我找到了另一个有解决方案部分的帖子,至少在我的目的帮助了很多......我只是改变了我的想法:
setContentView(R.layout.pending);
为:
View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.pending, null);
this.setContentView(viewToLoad);
因此我的pending.xml页面的上下文被设置为父上下文...虽然我会承认,但我真的不明白为什么它不一定是父母的父母,为什么只是本身就是孩子的父母是可以接受的...希望有一段时间我会开始理解它。