Java 使用以setVisibility(View.GONE)开头的布局中的值发布;

Java 使用以setVisibility(View.GONE)开头的布局中的值发布;,java,android,view,Java,Android,View,我有一个连接到串行设备的应用程序。当我启动应用程序时,我希望设置被隐藏,因此我将linearlayout设置为不可见并消失。但是,这意味着未建立连接。有一个问题是,如果视图设置为“消失”,则无法读取我在微调器中设置的默认值,这是为什么以及如何修复它 如果设置被隐藏并且我连接,一旦我打开设置,连接工作正常 因此,如果两种布局都显示如下所示,则效果良好: 如果“设置”布局不可见,则可以正常工作: 但如果它消失了,在我拿出设置之前它不会工作: 下面是我在onCreate中使用默认值9600创建的

我有一个连接到串行设备的应用程序。当我启动应用程序时,我希望设置被隐藏,因此我将linearlayout设置为不可见并消失。但是,这意味着未建立连接。有一个问题是,如果视图设置为“消失”,则无法读取我在微调器中设置的默认值,这是为什么以及如何修复它

如果设置被隐藏并且我连接,一旦我打开设置,连接工作正常

因此,如果两种布局都显示如下所示,则效果良好:

如果“设置”布局不可见,则可以正常工作:

但如果它消失了,在我拿出设置之前它不会工作:

下面是我在onCreate中使用默认值9600创建的微调器的示例

mBaudSpinner = (Spinner) findViewById(R.id.bannerBaudSpinner);
        ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(
                this, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mBaudSpinner.setAdapter(adapter);
        String[] tempArray = SlickUSB2Serial.BAUD_RATES;
        for (int i = 0; i < tempArray.length; i++) {
            adapter.add(tempArray[i]);
        }
        mBaudSpinner.setSelection(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal());
我需要将其命名为,但它不是:

public void onItemSelected(AdapterView<?> parent, View view, int position,
            long id) {
        //bannerView.setVisibility(View.INVISIBLE);
        //bannerView.setVisibility(View.GONE);


        // TODO Auto-generated method stub

        Log.d(TAG3, "in onItemSelected");
        changeSelectedAdapter(mDeviceAdapters.get(position));
    }

问题是,尽管适配器正在连接,但changeSelectedAdapter没有被调用,因为onItemSelected没有被调用。这是因为如果视图设置为“已删除”,则不能选择项目

解决此问题的两种方法:

建立连接时手动调用它:

changeSelectedAdapter(mSelectedAdapter);
或者,当适配器连接时,我可以设置一些默认VAL:

mSelectedAdapter = adapter;
mSelectedAdapter.setCommSettings(BaudRate.BAUD_9600, DataBits.DATA_8_BIT, ParityOption.PARITY_NONE, StopBits.STOP_1_BIT);

第三种方法是让视图可见,但通过编程将大小设置为一些微小的大小,然后,您可以根据需要将其更改回所需大小

如果您知道应用程序启动时的选择,为什么您需要从微调器获取选择,而不仅仅是使用所选值?我不确定如何设置初始值是这里的问题,这是一个全新的问题。如果我尝试选择Adapter.setCommSettings(波特率.BAUD_9600,数据位.DATA_8位,奇偶选项.ParityOption_NONE,停止位.STOP_1位);应用程序崩溃是因为mSelectedAdapter为空,因为除非我拿出设置,否则不会调用changeSelectedAdapter。如果设置可见,则会调用它,但我没有;我不知道当视图消失时,您需要调用
mSelectedAdapter
什么?如果没有,您可能不需要调用它,或者使用一些默认值初始化mSelectedAdapter,当您的视图处于
gone
状态时,我将立即尝试此操作,谢谢,我会看到的。
mDeviceSpinner = (Spinner) findViewById(R.id.bannerDeviceSpinner);
        mDeviceSpinnerAdapter = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item);
        mDeviceSpinnerAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mDeviceSpinner.setAdapter(mDeviceSpinnerAdapter);
        mDeviceSpinner.setOnItemSelectedListener(this);
private static USB2SerialAdapter mSelectedAdapter;
changeSelectedAdapter(mSelectedAdapter);
mSelectedAdapter = adapter;
mSelectedAdapter.setCommSettings(BaudRate.BAUD_9600, DataBits.DATA_8_BIT, ParityOption.PARITY_NONE, StopBits.STOP_1_BIT);