我正在尝试将微调器添加到我的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);
}
答案 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);
}
}
或者您可以使用this
或getApplicationContext()
代替MainAcitvity.this
但我更喜欢使用this
答案 2 :(得分:0)
createFromResource
的第一个参数是context。您可以通过两种方式获取上下文:
getApplicationContext()
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) {
}
}