Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何制作微调器取决于另一个微调器_Android_Android Spinner - Fatal编程技术网

Android 如何制作微调器取决于另一个微调器

Android 如何制作微调器取决于另一个微调器,android,android-spinner,Android,Android Spinner,我正在为android构建一个简单的应用程序,它由微调器和edittext组成。 问题是在适配器中有两个带阵列的微调器 微调器1 ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,R.array.kendaraan_arrays,android.R.layout.simple_spinner_item); spKendaraan.setAdapter(adapter1); 我想要的是来自微调器2的数组取决于我在微

我正在为android构建一个简单的应用程序,它由微调器和edittext组成。 问题是在适配器中有两个带阵列的微调器

微调器1

 ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,R.array.kendaraan_arrays,android.R.layout.simple_spinner_item);
    spKendaraan.setAdapter(adapter1);
我想要的是来自微调器2的数组取决于我在微调器1中选择的内容

旋转器2

@Override
    public void onItemSelected (AdapterView < ? > adapterView, View view,int position, long id){
    if (spKendaraan.getSelectedItem().equals("Mobil")) {
        Toast.makeText(getApplicationContext(), "Mobil dipilih", Toast.LENGTH_SHORT).show();
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this, R.array.pelanggaran_mobil, android.R.layout.simple_spinner_item);
        spPelanggaran.setAdapter(adapter2);
    } else {
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this, R.array.pelanggaran_motor, android.R.layout.simple_spinner_item);
        spPelanggaran.setAdapter(adapter2);
    }
}

因为我是android新手,所以任何例子都会非常感谢。

我只看到在这行下面,您可以编写
getApplicationContext()
getBaseContext()
,而不是

ArrayAdapter adapter2 = ArrayAdapter.createFromResource(getBaseContext(), R.array.pelanggaran_mobil, android.R.layout.simple_spinner_item);

我想它现在应该可以用了。如果您对此有任何问题,请告诉我:)

我可以看到,在这一行下面,您可以编写
getApplicationContext()
getBaseContext()
,而不是
这一行,因此实际的代码应该在
onItemSelected

ArrayAdapter adapter2 = ArrayAdapter.createFromResource(getBaseContext(), R.array.pelanggaran_mobil, android.R.layout.simple_spinner_item);

我想它现在应该可以用了。如果您对此有任何问题,请告诉我:)

我不知道为什么您的代码不起作用,但下面是一个示例代码,它可以根据您的需要工作,我希望这会有所帮助

XML布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.stackspinner.MainActivity" >

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/spinner1" />

</RelativeLayout>

活动:

public class MainActivity extends Activity implements OnItemSelectedListener {

Spinner spinner1, spinner2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,
            R.array.array1, android.R.layout.simple_spinner_item);
    spinner1.setAdapter(adapter1);
    spinner1.setOnItemSelectedListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
        long id) {
    if (spinner1.getSelectedItem().equals("mobile")) {
        Toast.makeText(getApplicationContext(), "Mobil dipilih",
                Toast.LENGTH_SHORT).show();

        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
                R.array.mobile_array, android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter2);
    } else {
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
                R.array.motor_array, android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter2);
    }

}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub
}

}
public类MainActivity扩展活动实现OnItemSelectedListener{
喷丝器喷丝器1、喷丝器2;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
喷丝头1=(喷丝头)findViewById(R.id.spinner1);
喷丝头2=(喷丝头)findViewById(R.id.spinner2);
ArrayAdapter adapter1=ArrayAdapter.createFromResource(此,
R.array.array1,android.R.layout.simple_微调器_项);
喷丝头1.设置适配器(适配器1);
喷丝头1.SetonimSelectedListener(此);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
已选择公共位置(AdapterView父对象、视图、整型位置、,
长id){
if(spinner1.getSelectedItem().equals(“移动”)){
Toast.makeText(getApplicationContext(),“Mobil dipilih”,
吐司。长度(短)。show();
ArrayAdapter adapter2=ArrayAdapter.createFromResource(此,
R.array.mobile_数组,android.R.layout.simple_微调器_项);
喷丝头2.设置适配器(适配器2);
}否则{
ArrayAdapter adapter2=ArrayAdapter.createFromResource(此,
R.array.motor\u数组,android.R.layout.simple\u微调器\u项);
喷丝头2.设置适配器(适配器2);
}
}
@凌驾
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
}
}
字符串:

<resources>

<string name="app_name">Application Name</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>

<string-array name="array1">
    <item>mobile</item>
    <item>motor</item>
</string-array>
<string-array name="mobile_array">
    <item>Android</item>
    <item>blackberry</item>
    <item>apple</item>
</string-array>
<string-array name="motor_array">
    <item>Audi</item>
    <item>BMW</item>
    <item>unicorn</item>
</string-array>

应用程序名称
你好,世界!
设置
可移动的
发动机
安卓
黑莓
苹果
奥迪
宝马
独角兽

我不知道为什么您的代码不起作用,但下面是一个示例代码,它可以根据您的需要工作,我希望这会有所帮助

XML布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.stackspinner.MainActivity" >

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/spinner1" />

</RelativeLayout>

活动:

public class MainActivity extends Activity implements OnItemSelectedListener {

Spinner spinner1, spinner2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,
            R.array.array1, android.R.layout.simple_spinner_item);
    spinner1.setAdapter(adapter1);
    spinner1.setOnItemSelectedListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
        long id) {
    if (spinner1.getSelectedItem().equals("mobile")) {
        Toast.makeText(getApplicationContext(), "Mobil dipilih",
                Toast.LENGTH_SHORT).show();

        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
                R.array.mobile_array, android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter2);
    } else {
        ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this,
                R.array.motor_array, android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter2);
    }

}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub
}

}
public类MainActivity扩展活动实现OnItemSelectedListener{
喷丝器喷丝器1、喷丝器2;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
喷丝头1=(喷丝头)findViewById(R.id.spinner1);
喷丝头2=(喷丝头)findViewById(R.id.spinner2);
ArrayAdapter adapter1=ArrayAdapter.createFromResource(此,
R.array.array1,android.R.layout.simple_微调器_项);
喷丝头1.设置适配器(适配器1);
喷丝头1.SetonimSelectedListener(此);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
已选择公共位置(AdapterView父对象、视图、整型位置、,
长id){
if(spinner1.getSelectedItem().equals(“移动”)){
Toast.makeText(getApplicationContext(),“Mobil dipilih”,
吐司。长度(短)。show();
ArrayAdapter adapter2=ArrayAdapter.createFromResource(此,
R.array.mobile_数组,android.R.layout.simple_微调器_项);
喷丝头2.设置适配器(适配器2);
}否则{
ArrayAdapter adapter2=ArrayAdapter.createFromResource(此,
R.array.motor\u数组,android.R.layout.simple\u微调器\u项);
喷丝头2.设置适配器(适配器2);
}
}
@凌驾
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
}
}
字符串:

<resources>

<string name="app_name">Application Name</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>

<string-array name="array1">
    <item>mobile</item>
    <item>motor</item>
</string-array>
<string-array name="mobile_array">
    <item>Android</item>
    <item>blackberry</item>
    <item>apple</item>
</string-array>
<string-array name="motor_array">
    <item>Audi</item>
    <item>BMW</item>
    <item>unicorn</item>
</string-array>

应用程序名称
你好,世界!
设置
可移动的
发动机
安卓
黑莓
苹果
奥迪
宝马
独角兽

您遇到了什么问题?您遇到了什么问题?谢谢,它很有魅力!在我的代码中没有这样的代码“spinner1.SetonimselectedListener(this)”;“对不起,我不能投票给你的答案,明白了,你不能投票给它,但我很高兴它帮助了你……)谢谢,它很有魅力!