2

我试图将所选项目的值放入TextView中,并且我希望它在每次选定项目更改时都进行更改! 我试图将选定项目的位置放入一个字符串中,然后将TextView的文本设置为等于这个相同的字符串,但没有成功!我真的很新的Java编码,所有的答案真的很受欢迎!如何将TextView的文本设置为微调器上选定项目的内容?

主要活动:

package com.barcala.android.smiteultimatecountdown; 
 

 
import android.support.v7.app.AppCompatActivity; 
 
import android.os.Bundle; 
 
import android.view.MenuItem; 
 
import android.view.View; 
 
import android.widget.AdapterView; 
 
import android.widget.ArrayAdapter; 
 
import android.widget.Spinner; 
 
import android.widget.TextView; 
 
import android.widget.Toast; 
 

 
import org.w3c.dom.Text; 
 

 
import static android.icu.lang.UCharacter.GraphemeClusterBreak.T; 
 
import static com.barcala.android.smiteultimatecountdown.R.array.godsNames; 
 
import static com.barcala.android.smiteultimatecountdown.R.id.god_List; 
 
import static com.barcala.android.smiteultimatecountdown.R.id.selected_God; 
 
import static com.barcala.android.smiteultimatecountdown.R.string.selected_god; 
 

 

 
public class ultimate extends AppCompatActivity { 
 
     Spinner gl; 
 
     String god1; 
 
     TextView selectedGod; 
 

 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_ultimate); 
 
     selectedGod = (TextView) findViewById(R.id.selected_God); 
 
     selectedGod.setText(selected_god); 
 
     addListenerOnSpinnerItemSelection(); 
 

 
    } 
 

 

 
    public void addListenerOnSpinnerItemSelection() { 
 
     gl = (Spinner) findViewById(R.id.god_List); 
 
     gl.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
 

 

 
    } 
 

 
    public void get_name(View view) { 
 
     Spinner god_List = (Spinner) findViewById(R.id.god_List); 
 
     god1 = god_List.getSelectedItem().toString(); 
 
     TextView selectedGod = (TextView) findViewById(R.id.selected_God); 
 
     selectedGod.setText(god1); 
 
    } 
 
}

MyOnItemSelectedListener():

package com.barcala.android.smiteultimatecountdown; 
 

 
import android.view.View; 
 
import android.widget.AdapterView; 
 
import android.widget.ArrayAdapter; 
 
import android.widget.Spinner; 
 
import android.widget.Toast; 
 
import android.widget.TextView; 
 

 
import org.w3c.dom.Text; 
 

 
import static android.R.attr.y; 
 
import static com.barcala.android.smiteultimatecountdown.R.id.god_List; 
 
import static com.barcala.android.smiteultimatecountdown.R.id.selected_God; 
 
import static com.barcala.android.smiteultimatecountdown.R.string.selected_god; 
 

 

 
public class MyOnItemSelectedListener extends ultimate implements AdapterView.OnItemSelectedListener { 
 

 

 
     @Override 
 
     public void onItemSelected(AdapterView parent, View view, int pos, long id) { 
 

 
      String result = parent.getItemAtPosition(pos).toString(); 
 

 
      selectedGod.setText(result); 
 
      Toast.makeText(parent.getContext(), "Selected God : " + result , Toast.LENGTH_SHORT).show(); 
 
     } 
 

 
     @Override 
 
     public void onNothingSelected(AdapterView parent) { 
 

 
     } 
 
    }

的logcat的:

03-05 15:12:09.966 19007-19007/com.barcala.android.smiteultimatecountdown E/AndroidRuntime: FATAL EXCEPTION: main 
 
                          Process: com.barcala.android.smiteultimatecountdown, PID: 19007 
 
                          java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
 
                           at com.barcala.android.smiteultimatecountdown.MyOnItemSelectedListener.onItemSelected(MyOnItemSelectedListener.java:26) 
 
                           at android.widget.AdapterView.fireOnSelected(AdapterView.java:1124) 
 
                           at android.widget.AdapterView.access$200(AdapterView.java:54) 
 
                           at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:1089) 
 
                           at android.os.Handler.handleCallback(Handler.java:739) 
 
                           at android.os.Handler.dispatchMessage(Handler.java:95) 
 
                           at android.os.Looper.loop(Looper.java:145) 
 
                           at android.app.ActivityThread.main(ActivityThread.java:5951) 
 
                           at java.lang.reflect.Method.invoke(Native Method) 
 
                           at java.lang.reflect.Method.invoke(Method.java:372) 
 
                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
 
                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

回答

0

你上面的线为吐司,把这个行:

g1.setText(mAdapter.getItem(adapterView.getSelectedItemPosition())); 

但它的工作,你需要让你的适配器进行访问。所以适配器设置了旁边的“TextView的G1”,并把它们在活动的顶部,而不是在监听器里:

TextView g1; 
ArrayAdapter<CharSequence> mAdapter; 

编辑回应评论:

把G1和mAdapter中的活度的顶部:

public class MainActivity { 

    TextView mG1; 
    ArrayAdapter<CharSequence> mAdapter; 
    ... 
} 
+0

首先谢谢你的回答,但是当我把g1.set文本的 “getSelectedItem” 不工作。它不认识它。 –

+0

我更新了答案。 –

+0

好的,谢谢,我会尝试! –

0

string.xml

<string-array name="array_name"> 
<item>Array Item One</item> 
<item>Array Item Two</item> 
<item>Array Item Three</item> 
</string-array> 

布局

<Spinner 
     android:id="@+id/spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:drawSelectorOnTop="true" 
     android:entries="@array/array_name" 
    /> 

Activity类

String[] myarray; 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    myarray = getResources().getStringArray(R.array.array_name); 
} 

public class MyOnItemSelectedListener implements AdapterView.OnItemSelectedListener { 

    TextView g1; 


     @Override 
     public void onItemSelected(AdapterView parent, View view, int pos, long id) { 



       String result = myarray[pos]; 
       Toast.makeText(parent.getContext(), "Selected Country : " + result , Toast.LENGTH_SHORT).show(); 
       g1.setText(result); 

     } 

     @Override 
     public void onNothingSelected(AdapterView parent) { 

     } 
    } 
+0

嗨,感谢您的帮助,我已经尝试过您的方法,但是当apk开始运行时它会崩溃...也许这是我的代码中的其他位置? –

+0

如何在TextView上设置文本? –

+0

当我运行它logcast“java.lang.NullPointerException:尝试从空数组读取” –

相关问题