Передача данных через Intent в Android, просто нужно количество кликов - PullRequest
1 голос
/ 07 февраля 2012

У меня есть программа, которая запускается при одном действии, переходит к следующему, и их кнопка нажимается, через некоторое время она возвращается на начальную страницу и сообщает о количестве нажатий.

Вотмой код: клик - это первое занятие

public class ClickCountActivity extends Activity {
/** Called when the activity is first created. */
     Button next;   

     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          next=(Button) findViewById(R.id.NextButton);
     //---------------------------------------------------------------       
          next.setOnClickListener(new View.OnClickListener() {

              public void onClick(View v) {
                 Intent i = new Intent(ClickCountActivity.this, startClickActivity.class);
                 i.putExtra("comingFrom", "come");
                 final int result=1;
                 startActivityForResult(i,result);
              }
          });
    //---------------------------------------------------------------------------   
     }
}

public class startClickActivity extends Activity {
/** Called when the activity is first created. */

     Button clicker;
     int counter ;
     Timer timer = new Timer(); // use timer to start a new task 
     MyTimerTask task = new MyTimerTask(); 
     final long seconds = 3;

     Intent p = getIntent();
     String answer = p.getStringExtra("comingFrom");

     class MyTimerTask extends TimerTask {
         public void run()
         //override run method    
         {

             Intent x =  new Intent(startClickActivity.this, ClickCountActivity.class);
             x.putExtra("returnStr", answer);
             setResult(RESULT_OK,x);
             startActivity(x);

         }
     }

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.action);

         clicker=(Button) findViewById(R.id.Clicker);

   //---------------------------------------------------------------                    
         clicker.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)  {                                                                   
                 counter++; // counts number of clicks
                 task.cancel(); // cancels current task
                 task = new MyTimerTask(); //create new task
                 timer.schedule(task,seconds*1000L); // start a new timer task in 5seconds (timertask, seconds(long))
                 // System.out.println(counter);

            }
         });                

    }
}

1 Ответ

1 голос
/ 07 февраля 2012
Your code in run method should be this:

Intent x =  new Intent(startClickActivity.this, ClickCountActivity.class);
x.putExtra("returnStr", counter);
setResult(RESULT_OK,x);
finish();

Вам нужно пройти нет. счетчиков, то есть счетчик в намерении и получить его из onActivityResult (int requestCode, int resultCode, Intent data) метод класса ClickCountActivity. Значение передается в намерении данных и может быть запрошено с помощью int counterValue = data.getIntegerExtra ("returnStr", 0);

...