繁体   English   中英

TabWidget错误令牌中的Android Spinner

[英]Android Spinner Within TabWidget Bad Token

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

非常感谢您提供有关如何正确设置我的上下文的帮助(如果没有麻烦,请提供一些小的说明)!

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

setContentView(R.layout.pending); 

至:

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

因此,虽然我承认,我的pending.xml页面的上下文设置为父级的上下文...我并不真正理解为什么它不必一定是父级的父级,以及为什么只是父级的本身还是个孩子是可以接受的...希望有一段时间我会开始理解它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM