我正在尝试在我的android应用中添加微调器

时间:2019-08-03 04:40:37

标签: java android android-studio android-spinner

我正在尝试将微调器添加到我的android应用程序中,但给我这个错误(编译失败;有关详细信息,请参见编译器错误输出。),当该部分(MainActivity.this)在其下方显示红线时,光标位于其下,说明“ com.example.myapplication.MainActivity”不是封闭的类。我是通过另一个活动而不是主要活动来执行此操作的。 MainActivity中没有任何更改。 AddEmployee类

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_employee);


        Spinner myspinner = (Spinner) findViewById(R.id.spinner);

        ArrayAdapter myAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.types, android.R.layout.simple_list_item_1);
       myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        myspinner.setAdapter(myAdapter);
    }

4 个答案:

答案 0 :(得分:0)

尝试这样

List<String > strings = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity,android.R.layout.simple_list_item_1,strings);
spinner.setAdapter(adapter);

答案 1 :(得分:0)

您需要一个有效的上下文,因此您应该使用当前活动

public class SecondActivity extends Activity {

    @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_add_employee); 
          Spinner myspinner = (Spinner) findViewById(R.id.spinner);

          ArrayAdapter myAdapter = ArrayAdapter.createFromResource(SecondActivity.this, R.array.types, android.R.layout.simple_list_item_1);
          myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
          myspinner.setAdapter(myAdapter);
      }


}

或者您可以使用thisgetApplicationContext()代替MainAcitvity.this 但我更喜欢使用this

答案 2 :(得分:0)

createFromResource的第一个参数是context。您可以通过两种方式获取上下文:

  1. 应用上下文:getApplicationContext()
  2. 活动上下文:ActivityName.this

应用程序上下文是项目的常规上下文,您可以从所有活动中获取它。 活动顶点是特定于活动的。因此,您只能通过自己的活动来访问它。您尝试从另一个活动访问活动上下文,因此出现此错误。您可以尝试getApplicationContext()AddEmployee.this

答案 3 :(得分:0)

这是一个可行的示例:

public class Main extends AppCompatActivity implements AdapterView.OnItemSelectedListener 

    {

 String[] item_list= {"Select your option", "item1", "item2", "item3", "item4"};

  @Override

   protected void onCreate(Bundle savedInstanceState) 
    {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_add_employee); 

    Spinner spin = (Spinner) findViewById(R.id.spinner);
    spin.setOnItemSelectedListener(this);

    ArrayAdapter aa = new ArrayAdapter(this, android.R.layout.simple_spinner_item, item_list);
    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    //Setting the ArrayAdapter data on the Spinner
    spin.setAdapter(aa);
  }

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
}