java - 在系统中添加另一个计数器

标签 java android button count

我在这个项目中有一个计数器,它一切正常,但我试图在屏幕底部放置另一个计数器,它会执行相同的操作,但会在另一个计数上工作。所以会有两个计数器以不同的方式计数,但我无法让它工作。

xml代码:

<TextView
    android:id="@+id/TextViewCount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world" />

<Button
    android:id="@+id/ButtonCount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/TextViewCount"
    android:layout_alignRight="@+id/TextViewCount"
    android:layout_marginBottom="22dp"
    android:text="Count" />

主要代码:

package com.example.counter;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {
 // Private member field to keep track of the count
 private static int mCount = 0;

private TextView countTextView;
private Button countButton;
public static final String PREFS_NAME = "com.example.myApp.mCount";
private SharedPreferences settings = null;
private SharedPreferences.Editor editor = null;

    /** ADD THIS METHOD **/
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);  
      setContentView(R.layout.main);
      countTextView = (TextView) findViewById(R.id.TextViewCount);
      countButton = (Button) findViewById(R.id.ButtonCount);

      countButton.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
              mCount++;
              countTextView.setText("Count: " + mCount);
              editor = settings.edit(); 
              editor.putInt("mCount", mCount);
              editor.commit();
          }
      });
    settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);


     }

    @Override
    public void onPause() {
      super.onPause();  
    }

    @Override
    public void onResume() {
      super.onResume();  
      mCount = settings.getInt("mCount", 0);
      countTextView.setText("Count: " + mCount);
    }
    }

最佳答案

您需要线程来执行此任务,每个计数器必须在单独的线程中运行。

做类似的事情:

Thread t = new Thread(new Runnable(){

   public void run() {
      Thread.sleep(1000);
      counter++;
   }
});
t.start();

或者使用AsyncTask

更新:

创建另一个计数器和两个线程变量:

private static int mCount2 = 0;
private static Thread mT1, mT2;

那么你需要一个方法,如下所示:

private void startCounter(Thread t, counter) {
   t = new Thread(new Runnable(){

      public void run() {
         while(true) {
            Thread.sleep(1000);
            counter++;
         }
      }
   });
t.start();
}

您可以在 onclick-method 中为每个带有计数器的线程调用此方法, 那么你只需在 onPause 方法中停止线程即可:

@Override
public void onPause() {
  super.onPause();  
  mT1.stop();
  mT2.stop();
}

也许您需要 if 子句来测试线程是否正在实际运行。

关于java - 在系统中添加另一个计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892869/

相关文章:

android - 协程作业返回值

html - 提交按钮周围带有渐变的奇怪边框。我该如何删除?

java - 使用Kotlin的Moshi 1.8.0无法将HashMap列表从JSON转换为JSON的问题

java - os时区更改tomcat需要重启

java - 如何摆脱数组列表中的空格?

android - 为什么首页上的 ViewPager 会重置其他页面的数据?

java - 设置客户端套接字和服务器套接字监听器 (Java)

android - GPS 标记在 android 中捕获的图像

python - 如何修复按钮命令在代码运行后立即执行的问题?

java - boolean 值 - 它应该停止时却没有停止(JAVA)