Android的微调-onItemSelected [英] android spinner -onItemSelected

查看:122
本文介绍了Android的微调-onItemSelected的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个初学者。我有一个微调的一个问题。我想通过使用onItemSelected方法来创建一个微调,并显示TextView中所选项目飞旋

但我的计划是不是在模拟器中运行。它说:程序已停止..
什么是我在下面的程序错误。请帮助我..谢谢..ü

我SpinOnItemActivity.java

 包spinner.onitemsel;
进口android.app.Activity;
  进口android.os.Bundle;
 进口android.view.View;
 进口android.widget.AdapterView;
 进口android.widget.ArrayAdapter;
 进口android.widget.Button;
 进口android.widget.Spinner;
 进口android.widget.TextView;
 进口android.view.View.OnClickListener;  公共类SpinOnItemActivity扩展活动
  {
    微调SP =(微调)findViewById(R.id.spin);;    ArrayAdapter<&CharSequence的GT;适配器= ArrayAdapter.createFromResource(
            对此,R.array.spinner_array,android.R.layout.simple_spinner_item);
            公共无效的onCreate(捆绑savedInstanceState)
            {
                      super.onCreate(savedInstanceState);
                  的setContentView(R.layout.activity_spin_on_item);                    sp.performClick();            }
            公共无效onItemSelected(适配器视图<>适配器视图,视图观点,INT I,长L){
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                sp.setAdapter(适配器);                字符串名称=(字符串)sp.getSelectedItem();                TextView的tview1 =(的TextView)findViewById(R.id.testtxt);
                tview1.setText(姓名);            } }

我activity_spin_on_item.xml文件

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=。SpinActivity><微调
    机器人:ID =@ + ID /旋转
    机器人:layout_width =149dp
    机器人:layout_height =66dp
    机器人:layout_alignBottom =@ + ID /按钮1
    机器人:layout_alignParentLeft =真
    机器人:layout_alignRight =@ + ID / testtxt
    机器人:layout_gravity =顶/>
<的TextView
    机器人:ID =@ + ID / testtxt
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_above =@ + ID / testtxt2
    机器人:layout_centerHorizo​​ntal =真
    机器人:layout_marginBottom =44dp
    机器人:重力=底
    机器人:文字=旋转TXT/> < / RelativeLayout的>

我logcat的报告

  9月12日至10日:58:40.988:W /微量(83​​7):从nativeGetEnabledTags意外的值:0
9月12日至10日:58:41.168:W /微量(83​​7):意外从nativeGetEnabledTags值:0
9月12日至10日:58:41.198:W /微量(83​​7):意外从nativeGetEnabledTags值:0
9月12日至10日:58:41.878:D / dalvikvm(837):GC_CONCURRENT释放51K,6%免费2830K / 2996K,暂停为12ms + 3ms的,总56MS
9月12日至10日:58:41.878:D / dalvikvm(837):WAIT_FOR_CONCURRENT_GC 25ms的受阻
9月12日至10日:58:41.968:D / AndroidRuntime(837):关闭VM
9月12日至10日:58:41.968:W / dalvikvm(837):主题ID = 1:螺纹未捕获的异常退出(组= 0x40a70930)
9月12日至10日:58:41.988:E / AndroidRuntime(837):致命异常:主要
9月12日至10日:58:41.988:E / AndroidRuntime(837):了java.lang.RuntimeException:无法启动活动ComponentInfo {spinner.onitemsel / spinner.onitemsel.SpinOnItemActivity}:android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌空无效;是您的活动运行?
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.app.ActivityThread.access $ 600(ActivityThread.java:141)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.os.Handler.dispatchMessage(Handler.java:99)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.os.Looper.loop(Looper.java:137)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.app.ActivityThread.main(ActivityThread.java:5039)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在java.lang.reflect.Method.invokeNative(本机方法)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在java.lang.reflect.Method.invoke(Method.java:511)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在dalvik.system.NativeStart.main(本机方法)
9月12日至10日:58:41.988:E / AndroidRuntime(837):$ android.view.WindowManager BadTokenException:产生的原因无法添加窗口 - 令牌空无效;是您的活动运行?
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.view.ViewRootImpl.setView(ViewRootImpl.java:567)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:246)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.widget.PopupWindow.invokePopup(PopupWindow.java:993)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.widget.PopupWindow.showAsDropDown(PopupWindow.java:899)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.widget.ListPopupWindow.show(ListPopupWindow.java:603)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.widget.Spinner $ DropdownPopup.show(Spinner.java:981)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.widget.Spinner.performClick(Spinner.java:609)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在spinner.onitemsel.SpinOnItemActivity.onCreate(SpinOnItemActivity.java:35)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.app.Activity.performCreate(Activity.java:5104)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
9月12日至10日:58:41.988:E / AndroidRuntime(837):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
9月12日至10日:58:41.988:E / AndroidRuntime(837):11 ...更多
10月12日至10日:03:42.109:I /流程(837):发送信号。 PID:837 SIG:9

我的编辑code:请检查出来。

 包spinner.onitemsel;
 进口android.app.Activity;
 进口android.os.Bundle;
 进口android.view.View;
 进口android.widget.AdapterView;
 进口android.widget.ArrayAdapter;
 进口android.widget.Spinner;
 进口android.widget.TextView; 公共类SpinOnItemActivity扩展活动
 {
    ArrayAdapter<&CharSequence的GT;适配器;
    微调SP;
    TextView的tview1;
    INT长;            公共无效的onCreate(捆绑savedInstanceState)
            {
                super.onCreate(savedInstanceState);
                的setContentView(R.layout.activity_spin_on_item);                SP =(微调)findViewById(R.id.spin);
                适配器= ArrayAdapter.createFromResource(这一点,R.array.spinner_array,android.R.layout.simple_spinner_item);
                     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);                sp.setAdapter(适配器);
                sp.performClick();
            }
            公共无效onItemSelected(适配器视图<>适配器视图,视图观点,INT I,长L){
                字符串名称=(字符串)sp.getSelectedItem();
                tview1 =(的TextView)findViewById(R.id.testtxt);
                tview1.setText(姓名);            } }


解决方案

其实你的微调SP ,所以当code行 sp.performClick(); 的onCreate执行()空的应用程序崩溃指针异常

由于您定义微调SP 上面的onCreate()因此Android没有找到微调SP 布局文件文件。它应该是在的setContentView()因此Android果壳有微调特定活动的参考。

解决方案:

把这些行,

 微调SP =(微调)findViewById(R.id.spin);;ArrayAdapter<&CharSequence的GT;适配器= ArrayAdapter.createFromResource(
            对此,R.array.spinner_array,android.R.layout.simple_spinner_item);

的onCreate()后的setContentView(R.layout.activity_spin_on_item)活动的;

喜欢的东西,

 公共无效的onCreate(捆绑savedInstanceState)
{
 super.onCreate(savedInstanceState);
 的setContentView(R.layout.activity_spin_on_item); 微调SP =(微调)findViewById(R.id.spin);;
 ArrayAdapter<&CharSequence的GT;适配器= ArrayAdapter.createFromResource(
                对此,R.array.spinner_array,android.R.layout.simple_spinner_item);
 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 sp.setAdapter(适配器); sp.performClick();
}

更新:2

从你的 activity_spin_on_item.xml 文件。

看父标签

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=。SpinActivity>

在此属性

 工具:上下文=。SpinActivity

工具:上下文=。SpinOnItemActivity

I am a Beginner. I have a problem with a spinner. I want to create a spinner by using onItemSelected method and to display that selected spinner item in TextView

But my program is not running in emulator. it says "Program stopped".. what was my mistake in below program. Pls help me.. Thanks U..

My SpinOnItemActivity.java

package spinner.onitemsel;
import android.app.Activity;
  import android.os.Bundle;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
 import android.widget.Spinner;
 import android.widget.TextView;
 import android.view.View.OnClickListener;

  public class SpinOnItemActivity extends Activity  
  {
    Spinner sp= (Spinner) findViewById(R.id.spin);;

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.spinner_array , android.R.layout.simple_spinner_item);




            public void onCreate(Bundle savedInstanceState)
            {           
                      super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_spin_on_item );

                    sp.performClick();

            }
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {    
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                sp.setAdapter(adapter);

                String Name = (String) sp.getSelectedItem();

                TextView tview1 = (TextView)findViewById(R.id.testtxt );
                tview1.setText(Name);

            }

 }

My activity_spin_on_item.xml file

<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"
tools:context=".SpinActivity" >

<Spinner
    android:id="@+id/spin"
    android:layout_width="149dp"
    android:layout_height="66dp"
    android:layout_alignBottom="@+id/button1"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/testtxt"
    android:layout_gravity="top" />


<TextView
    android:id="@+id/testtxt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/testtxt2"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="44dp"
    android:gravity="bottom"
    android:text="Spin Txt" />

 </RelativeLayout>

My logcat Report

12-10 09:58:40.988: W/Trace(837): Unexpected value from nativeGetEnabledTags: 0
12-10 09:58:41.168: W/Trace(837): Unexpected value from nativeGetEnabledTags: 0
12-10 09:58:41.198: W/Trace(837): Unexpected value from nativeGetEnabledTags: 0
12-10 09:58:41.878: D/dalvikvm(837): GC_CONCURRENT freed 51K, 6% free 2830K/2996K, paused 12ms+3ms, total 56ms
12-10 09:58:41.878: D/dalvikvm(837): WAIT_FOR_CONCURRENT_GC blocked 25ms
12-10 09:58:41.968: D/AndroidRuntime(837): Shutting down VM
12-10 09:58:41.968: W/dalvikvm(837): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
12-10 09:58:41.988: E/AndroidRuntime(837): FATAL EXCEPTION: main
12-10 09:58:41.988: E/AndroidRuntime(837): java.lang.RuntimeException: Unable to start activity ComponentInfo{spinner.onitemsel/spinner.onitemsel.SpinOnItemActivity}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.os.Looper.loop(Looper.java:137)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.app.ActivityThread.main(ActivityThread.java:5039)
12-10 09:58:41.988: E/AndroidRuntime(837):  at java.lang.reflect.Method.invokeNative(Native Method)
12-10 09:58:41.988: E/AndroidRuntime(837):  at java.lang.reflect.Method.invoke(Method.java:511)
12-10 09:58:41.988: E/AndroidRuntime(837):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-10 09:58:41.988: E/AndroidRuntime(837):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-10 09:58:41.988: E/AndroidRuntime(837):  at dalvik.system.NativeStart.main(Native Method)
12-10 09:58:41.988: E/AndroidRuntime(837): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.view.ViewRootImpl.setView(ViewRootImpl.java:567)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:246)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.widget.PopupWindow.invokePopup(PopupWindow.java:993)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:899)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.widget.ListPopupWindow.show(ListPopupWindow.java:603)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.widget.Spinner$DropdownPopup.show(Spinner.java:981)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.widget.Spinner.performClick(Spinner.java:609)
12-10 09:58:41.988: E/AndroidRuntime(837):  at spinner.onitemsel.SpinOnItemActivity.onCreate(SpinOnItemActivity.java:35)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.app.Activity.performCreate(Activity.java:5104)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
12-10 09:58:41.988: E/AndroidRuntime(837):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
12-10 09:58:41.988: E/AndroidRuntime(837):  ... 11 more
12-10 10:03:42.109: I/Process(837): Sending signal. PID: 837 SIG: 9

My Edited Code: Pls Check it out..

 package spinner.onitemsel;
 import android.app.Activity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.Spinner;
 import android.widget.TextView;

 public class SpinOnItemActivity extends Activity  
 {      
    ArrayAdapter<CharSequence> adapter;
    Spinner sp;
    TextView tview1;
    int length;

            public void onCreate(Bundle savedInstanceState)
            {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_spin_on_item );

                sp= (Spinner) findViewById(R.id.spin);


                adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array ,           android.R.layout.simple_spinner_item);
                     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                sp.setAdapter(adapter);
                sp.performClick();       
            }
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {    
                String Name = (String) sp.getSelectedItem();
                tview1 = (TextView)findViewById(R.id.testtxt );
                tview1.setText(Name);

            }

 }

解决方案

Actually your Spinner sp is null, So when code line sp.performClick(); is executed in onCreate() the application crashes with Null Pointer Exception.

Because you are defining Spinner sp in above onCreate() so android doesn't find the Spinner sp from Layout Xml file. It should be after setContentView() so android nut shell has a reference of that Spinner for particular Activity.

Solution:

Put these lines,

Spinner sp = (Spinner) findViewById(R.id.spin);;

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.spinner_array , android.R.layout.simple_spinner_item);

in onCreate() of Activity after setContentView(R.layout.activity_spin_on_item );

Something like,

public void onCreate(Bundle savedInstanceState)
{           
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_spin_on_item );

 Spinner sp= (Spinner) findViewById(R.id.spin);;
 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.spinner_array , android.R.layout.simple_spinner_item);
 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 sp.setAdapter(adapter);

 sp.performClick();
}

Update:2

From your activity_spin_on_item.xml File.

Look at Parent Tag,

<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"
tools:context=".SpinActivity" >

In this the attribute

tools:context=".SpinActivity"

should be tools:context=".SpinOnItemActivity"

这篇关于Android的微调-onItemSelected的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆