2016-07-03 4 views
0

2 가지 종류의 BuyCoins 및 CustomOnItemSelectListerner가 있습니다. BuyCoins 클래스에는 회 전자가 포함되어 있고 회 전자가 선택되면 CustomOnItemSelectListerner 클래스가 호출됩니다.텍스트보기에 null이 반환됩니다.

public class BuyCoins extends AppCompatActivity { 
... 
    public void addListenerOnSpinnerItemSelection() { 
    spinner1 = (Spinner) findViewById(R.id.spinner1); 
    //TextView t=(TextView) findViewById(R.id.conversion); 
    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener(t)); 
    } 
... 
} 

public class CustomOnItemSelectedListener implements OnItemSelectedListener { 
    //private TextView t; 

    //CustomerOnItemSelected (TextView V) {t=V;} 

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

     String selected= parent.getItemAtPosition(pos).toString(); 
     TextView t=(TextView)parent.findViewById(R.id.conversion); 

     switch(selected) { 
      case "A": 
       Toast.makeText(parent.getContext(), 
       "OnItemSelectedListener : " + selected, 
       Toast.LENGTH_SHORT).show(); 
       t.setText("$ala$"); 
       break; 
     } 
    ... 
} 

제 문제는 t.setText가 null을 반환한다는 것입니다. 그러나 나머지 case 문은 정상적으로 작동합니다. 도와주세요. 스피너와

레이아웃 파일

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="50dp" 
android:paddingTop="50dp" 
android:paddingRight="50dp"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Purchase Coins" 
     android:id="@+id/textView" 
     android:layout_gravity="center_horizontal" /> 


    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:id="@+id/coinpic" 
     android:src="@drawable/coin" 
     android:scaleX="0.8" 
     android:scaleY="0.8" 
     android:layout_gravity="center_horizontal" /> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

    <Spinner 
     android:id="@+id/spinner1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/coin_array" 
     android:prompt="@string/coin_prompt" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="" 
     android:id="@+id/conversion" 
     android:layout_gravity="right" /> 

    </LinearLayout> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Purchase Coins" 
     android:id="@+id/Pur_button" 
     android:layout_gravity="center_horizontal" 
     android:onClick="toast"/> 

</LinearLayout> 
+0

감사 : 당신의 Acticity에서 리스너를 만들 때

그런 다음 텍스트 뷰에 전달하는 새로운 생성자를 호출 . –

+0

xml 레이아웃을 공유하십시오. – pooyan

+0

ID "변환"뷰를 정의한 xml을 붙여 넣을 수 있습니까? 그게 주문 제작품입니까? –

답변

1

사용하여 활동에서 접근 할 필요가 거라고 있도록 acceas하려는 텍스트 뷰는 전체 레이아웃이 아닌 회 전자에 속하는 :

TextView t=(TextView) findViewById(R.id.conversion); 

아래의 setText를 호출 한 멤버 변수로 설정할 수있는 TextView를 사용하는 CustomOnItemSelectListener에 새 생성자를 만들어 리스너에게 전달할 수 있습니다. 나는이 경우에 오류를 왜 당신이 가능하게 알고 ... 중복으로 마킹

new CustomOnItemSelectListener(t); 
+0

감사하지만 작동하지 않았다 .. 그것은 나를 심지어 같은 오류로 폭격하지 않고 회 전자를 선택할 수 있도록하지 않습니다 –

+0

내 대답을 바꿨습니다 당신이 게시 한 XML, 오해하고 미안 변환보기가 회 전자 항목 레이아웃의 일부라고 생각합니다. –

+0

정말 고마워요. 절대적인 스타입니다. 위의 코드를 내가 만든 변경 사항으로 업데이트했습니다. 원래 코드의 주석을 봅니다 ... –

관련 문제