2012-11-14 70 views
0

我想让我的Spinner1改变spinner2的可见性。我的代码编译好了,但是应用程序在打开时崩溃。微调应用程序在打开时崩溃。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

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

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 

     public void onNothingSelected(AdapterView<?> arg0) { 

     } 

     public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) { 
      Spinner spinner = (Spinner)findViewById(R.id.spinner2); 
      Spinner spinner1 = (Spinner)findViewById(R.id.spinner1); 
      TextView textview1 = (TextView)findViewById(R.id.textView1); 

      if (spinner.getSelectedItemPosition() == 1) { 
       textview1.setVisibility(View.VISIBLE); 
       spinner1.setVisibility(View.VISIBLE); 
      } 
     } 
    }); 
} 
+8

发布您的日志猫错误 – RajeshVijayakumar

+0

我的猜测......您的'activity_main.xml'中没有'spinner',其资源ID为'spinner2',并且您得到一个'NullPointerException'。发布'activity_main.xml'。 – Squonk

+0

我在我的主要xml中有一个spinner2。 –

回答

1

请不要在活动中设置ID;它根本不好;这样做:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Spinner spinner = (Spinner)findViewById(R.id.spinner2); 
    Spinner spinner1 = (Spinner)findViewById(R.id.spinner1); 
    TextView textview1 = (TextView)findViewById(R.id.textView1); 


    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 

     public void onNothingSelected(AdapterView<?> arg0) { 

     } 

     public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) { 
      if (spinner.getSelectedItemPosition() == 1) { 
       textview1.setVisibility(View.VISIBLE); 
       spinner1.setVisibility(View.VISIBLE); 
      } 
     } 
    });} 
+0

我不明白为什么你在'onItemSelected(...)'方法中查找视图是一个问题。此外,OP称应用程序在打开时崩溃,而不是选择某个项目时。你建议的改变不应该有任何改变。 – Squonk

+0

:)我也曾经想过@Squonk曾经有过这样的事情,事情就是每当一个微调创建时它会调用这个方法,因为即使在我们选择哥们之前,微调项目也会移动任何项目;这意味着它已经选择了第一个选项并将其显示为默认选择 –

0

好了,我用的类来检查seleced项目

主代码解决了最初的应用程序崩溃:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Spinner spinner = (Spinner)findViewById(R.id.spinner2); 
    spinner.setOnItemSelectedListener(new checkSelectedItem()); 
} 

我的类:

public class checkSelectedItem implements OnItemSelectedListener { 

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
    Spinner spinner1 = (Spinner)parent.findViewById(R.id.spinner1); 
    TextView textview1 = (TextView)parent.findViewById(R.id.textView1); 
    if (pos == 1) { 
     textview1.setVisibility(View.VISIBLE); 
     spinner1.setVisibility(View.VISIBLE); 
    } 
    else { 
     if (textview1.getVisibility() == View.VISIBLE) { 
      textview1.setVisibility(View.INVISIBLE); 
     } 
     if (spinner1.getVisibility() == View.VISIBLE) { 
      spinner1.setVisibility(View.INVISIBLE); 
     } 
    } 
} 

public void onNothingSelected(AdapterView parent) { 

} 

因此,最初的崩溃是固定的,但现在当我选择我的spinner2中的选项1的应用程序崩溃。

相关问题