java - TabWidget 中的 Android Spinner 错误 token

标签 java android spinner android-context tabwidget

就这件事而言,我对 Android 和 Java 相当陌生,并且遇到了上下文问题 - 我在另一个 TabWidget 中的 TabWidget 中有一个 Spinner,在代码方面,我有一个主类,它是一个 TabActivity,位于我将特定选项卡的 Intent 设置为另一个 TabActivity,其中我将选项卡的 Intent 设置为 Activity,并将内容 View 设置为我拥有 Spinner 的布局(希望这是有意义的)。每当我单击微调器并尝试启动微调器的对话框时,都会出现错误的 token 错误。从我读到的内容来看,这是因为我的微调器有错误的上下文,但由于我没有主动设置我的上下文(我在 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);
    }
}

child Activity :

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 和 Pick 的 xml 文件基本上是 hello tabwidget 教程的副本,而我的ending.xml 只是一个包含一些按钮和微调器的 FrameLayout。如果有帮助的话,我可以发布代码,但我在发布更多代码时遇到问题(可能是字符限制)。

任何关于如何正确设置我的上下文的帮助(如果不麻烦的话,还有一个小解释)将不胜感激!

最佳答案

花了我一段时间,但我发现另一篇帖子包含了部分解决方案,至少对我的目的有很大帮助......我只是改变了我的:

setContentView(R.layout.pending); 

至:

View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.pending, null); 
    this.setContentView(viewToLoad); 

这样我的pending.xml页面的上下文就被设置为父级的上下文...尽管我承认,我真的不明白为什么它不必是父级的父级,以及为什么只是本身就是 child 的 parent 是可以接受的......希望给我一些时间我会开始理解它。

关于java - TabWidget 中的 Android Spinner 错误 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196876/

相关文章:

android - ROLI JUCE Android CMake 错误,生成的空白演示应用程序无法在 Android Studio 中编译

java - 将微调器值与数组值相乘

java - aerospike JUNIT 记录构造函数不工作

java - 在 PMD 中添加自定义规则 - 未找到类问题

java - SpringMVC批量加载资源文件(JS和CSS)

java - 为什么 if 语句在 Java/Android 中不起作用?

android - 错误 : cannot find symbol method findViewById(int)

android - 动态地向静态创建的微调器添加值

android - 在Android中动态改变微调器的宽度

Java ThreadPoolExecutor 处理时挂起