在android活动中添加一个计数器

时间:2013-10-21 22:08:34

标签: java android click

我对android很新。我在某个SomeActivity上有一个计数器,但当我到达与SomeActivity对应的页面时,我的应用程序崩溃了:

final TextView counter = (TextView) findViewById(R.id.laws_counter);
ImageView handDown = (ImageView) findViewById(R.id.handViewDown);
counter.setText("" + 0);

我希望点击handown,计数器由-1构思。这里的

handDown.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(NewsActivity.this,
                        "The favorite list would appear on clicking this icon",
                        Toast.LENGTH_LONG).show();
                setDown();
            }

            private void setDown() {
                String count = counter.getText().toString();
                int now_count = Integer.parseInt(count) +1;
                counter.setText(String.valueOf(now_count));
            }


        });

这段代码是否正确?

更新:这是logcat

10-22 00:18:05.579: ERROR/AndroidRuntime(378): FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.donnfelker.android.bootstrap/com.donnfelker.android.bootstrap.ui.NewsActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
        at android.app.ActivityThread.access$1500(ActivityThread.java:117)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:3683)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.NullPointerException
        at com.donnfelker.android.bootstrap.ui.NewsActivity.onCreate(NewsActivity.java:41)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
        ... 11 more

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式实现该功能,但认为这是一个简单的解决方案。

制作辅助方法:

public class PreferencesData {

public static void saveInt(Context context, String key, int value) {
    SharedPreferences sharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(context);
    sharedPrefs.edit().putInt(key, value).commit();
}

public static int getInt(Context context, String key, int defaultValue) {
    SharedPreferences sharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(context);
    return sharedPrefs.getInt(key, defaultValue);
}
}

然后只需调用putInt方法将计数器保存在任何Activity中,并调用getInt以在任何其他Activity中再次获取它。只要你在两个地方使用相同的密钥。