java– 如何在Android上实现OnClickListener

java– 如何在Android上实现OnClickListener,第1张

概述我从中学习http://developer.android.comeference/android/widget/Button.html“而不是将OnClickListener应用于活动中的按钮,您可以使用android:onClick属性为XML布局中的按钮指定方法.”但是,我只能用XML方法完成它,我的监听器方法由以下指定,导致应用程序崩溃.在我的frag

我从中学习

http://developer.androID.com/reference/androID/Widget/button.HTML

“而不是将OnClickListener应用于活动中的按钮,您可以使用androID:onClick属性为XML布局中的按钮指定方法.”

但是,我只能用XML方法完成它,我的监听器方法由以下指定,导致应用程序崩溃.

在我的fragment_main.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.myapp.MainActivity$PlaceholderFragment" >    <TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:text="@string/hello_world" />    <button        androID:ID="@+ID/try_button"         androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:text = "Trybutton"        androID:onClick="onClick"    /></relativeLayout>

在我的activity_main.xml中:

<FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:ID="@+ID/container"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    tools:context="com.example.myapp.MainActivity"    tools:ignore="MergeRootFrame"></FrameLayout>

在我的MainActivity.java中:

public class MainActivity extends Activity implements OnClickListener{@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    if (savedInstanceState == null) {        getFragmentManager().beginTransaction()                .add(R.ID.container, new PlaceholderFragment()).commit();    }    button button = (button)findVIEwByID(R.ID.try_button);          button.setonClickListener(this);}public voID onClick(VIEw v) {    Toast.makeText(getApplicationContext(), "I'm clicked!", Toast.LENGTH_SHORT).show();;}@OverrIDepublic 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;}@OverrIDepublic 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);}/** * A placeholder fragment containing a simple vIEw. */public static class PlaceholderFragment extends Fragment {    public PlaceholderFragment() {    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,            Bundle savedInstanceState) {        VIEw rootVIEw = inflater.inflate(R.layout.fragment_main, container,                false);        return rootVIEw;    }}

}

LogCat说:

05-20 19:56:17.604: E/MoreInfoHPW_VIEwGroup(566): Parent vIEw is not a TextVIEw05-20 19:56:17.649: D/AndroIDRuntime(566): Shutting down VM05-20 19:56:17.649: W/dalvikvm(566): threadID=1: thread exiting with uncaught exception (group=0x4194ec08)05-20 19:56:17.654: E/AndroIDRuntime(566): FATAL EXCEPTION: main05-20 19:56:17.654: E/AndroIDRuntime(566): Process: com.example.myapp, PID: 56605-20 19:56:17.654: E/AndroIDRuntime(566): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.MainActivity}: java.lang.NullPointerException05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2328)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.app.ActivityThread.access0(ActivityThread.java:169)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.os.Handler.dispatchMessage(Handler.java:102)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.os.Looper.loop(Looper.java:136)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.app.ActivityThread.main(ActivityThread.java:5476)05-20 19:56:17.654: E/AndroIDRuntime(566):  at java.lang.reflect.Method.invokeNative(Native Method)05-20 19:56:17.654: E/AndroIDRuntime(566):  at java.lang.reflect.Method.invoke(Method.java:515)05-20 19:56:17.654: E/AndroIDRuntime(566):  at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)05-20 19:56:17.654: E/AndroIDRuntime(566):  at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:1084)05-20 19:56:17.654: E/AndroIDRuntime(566):  at dalvik.system.NativeStart.main(Native Method)05-20 19:56:17.654: E/AndroIDRuntime(566): Caused by: java.lang.NullPointerException05-20 19:56:17.654: E/AndroIDRuntime(566):  at com.example.myapp.MainActivity.onCreate(MainActivity.java:29)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.app.Activity.performCreate(Activity.java:5473)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)05-20 19:56:17.654: E/AndroIDRuntime(566):  at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2292)05-20 19:56:17.654: E/AndroIDRuntime(566):  ... 11 more

我在windows 7上使用最新的Eclipse ADT v22.6.2,在Samsung galaxy Note 10.1 2014上运行.

我的代码出了什么问题?

解决方法:

试试这个:

public class MainActivity extends Activity  {@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    if (savedInstanceState == null) {        getFragmentManager().beginTransaction()            .add(R.ID.container, new PlaceholderFragment()).commit();    }    //button button = (button)findVIEwByID(R.ID.try_button);          //button.setonClickListener(this);}/**public voID onClick(VIEw v) {}*/@OverrIDepublic 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;}@OverrIDepublic 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);}/** * A placeholder fragment containing a simple vIEw. */public static class PlaceholderFragment extends Fragment implements OnClickListener {public PlaceholderFragment() {}@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,        Bundle savedInstanceState) {    VIEw rootVIEw = inflater.inflate(R.layout.fragment_main, container,            false);  button button = (button) rootVIEw.findVIEwByID(R.ID.try_button);        button.setonClickListener(this);    return rootVIEw;}@OverrIDepublic voID onClick(VIEw v) {    // Todo auto-generated method stub    Toast.makeText(getActivity(), "I'm clicked!", Toast.LENGTH_SHORT).show();}}}
总结

以上是内存溢出为你收集整理的java – 如何在Android上实现OnClickListener全部内容,希望文章能够帮你解决java – 如何在Android上实现OnClickListener所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1110552.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存