0

我是 Android 新手,正在尝试导航和显示信息。我成功地在这个应用程序的主视图上放置了一个微调器,但是当我单击另一个视图(通过执行 goFilter 的按钮)并返回(通过执行 goHome 的按钮)时,会出现一个占位符。我确定这与 goHome 未加载微调器类信息有关,但我不知道如何以不同的方式进行操作。

建议?.java 代码如下:

package com.example.hellorelative;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView;


public class HelloRelative extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.planets_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

    }
    public class MyOnItemSelectedListener implements OnItemSelectedListener {

        public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
          Toast.makeText(parent.getContext(), "The planet is " +
              parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
        }

        public void onNothingSelected(AdapterView parent) {
          // Do nothing.
        }
    }
    public void goFilter(View view) {
        setContentView(R.layout.c_filter);
    }
    public void goHome(View view) {
        setContentView(R.layout.main);
    }
}
4

1 回答 1

0

您的 go 方法实际上似乎并没有让应用程序去任何地方,您只需更改活动的布局。

我猜第二个布局没有带有 id 的微调器元素。这就是它消失的原因。

而且由于您永远不会启动另一个活动并返回到该活动,因此不会调用 onCreate() 方法,并且不会再次设置您的微调器。

您想要做的是为您的过滤器视图创建一个额外的活动并使用

startActivity(new Intent(this, filterActivity.class)

或者

在您的过滤器布局中提供微调器“可能”工作。如果您不希望它可见,只需将其设置为消失即可。

spinner.setVisibility(View.GONE);
于 2012-05-13T08:35:55.367 回答