Soru & Cevap

AlarmManager da textview'in textini değiştirme

12.05.2014 - 05:19

MainActivity içerisinde bir alarm manager metodum var.Bu metod her 1 dk da ekrana alarm çalıyor uyarısı veriyor.Ben bu metod içerisinde her 1 dk da değeri arttırılmış değişkenimi textview de göstermek istiyorum.Fakat her bir dk da değişkenimin değerini arttırdığım halde textview de değişkenim ilk değeri olan 0 değeri gözüküyor.Neden textview deki değer değişmiyor bir türlü bulamadım.bu konuda bana yardımcı olabilirmisiniz.

110 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user tsurucu
tsurucu
02.04.2016 - 12:59

main activiy içine TextView'ı Public Static olarak tanımlarsanız

onReceive methodu içinde

MainActivity.textviewAdı.setText("Yazı");

ile mainActivity içindeki textview yazısını değiştirebilirsin.

Profile picture for user htcszgn
htcszgn
13.05.2014 - 12:00

**Alarm Managerin her 15 snyede çalışmasını sağlayan sınıf**

public class alarmManagerBroadcastReceiver extends BroadcastReceiver
{  y sinif=new y();

    int y=0;
@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
  //Acquire the lock
            wl.acquire();
            y++;
     // sinif.ad.setText(String.valueOf(y));
            Toast.makeText(context, "Alarm Çalıyor : )", Toast.LENGTH_LONG).show();
           
            
          //  sinif.ad.setText("nn");
            wl.release();
         // Manifesttede tanımladığımız receiver sayesinde periyot süresi sonunda onReceive metodu içine gelip burada çalıştırmak istediğimiz kod uygulamanın o an açık olup olmamasından bağımsız olarak çalıştırılabilir.
}

public void SetRepeatingAlarm(Context context, int period)
 {
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
   //C intent.putExtra(String.valueOf(i),String.valueOf(y++));
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
    //After after 5 seconds
    // Tekrarlayacak alarmın kurulması.Period milisaniye cinsinden oldugu icin birim cevrimi gerekli   
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + period*1000, 1000 * period , pi);
 
 }

public void SetOneTimeAlarm(Context context, int period)

 {
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
// Tek seferlik alarmın kurulması.Period milisaniye cinsinden oldugu icin birim cevrimi gerekli   

am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + period*1000, pi);

 }

public void CancelAlarm(Context context)
 {
     // Kurulu son alarmı ipta et
     Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
     alarmManager.cancel(sender);
 }


}

 

**mainactivity sınıfım.diğer activity çağırdığım sınıf**

public class MainActivity extends Activity {

    private alarmManagerBroadcastReceiver alarm;
    private Button  buttonStartRepeating;
    private Button buttonStartOneTime;
    private Button buttonStop;
        private int period;
        private x degiskenim;
        int i=0;
       
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         // xml tarafından viewların çağrımı
        
            degiskenim.degisken=0;
              buttonStartRepeating = (Button) findViewById(R.id.button1);
                buttonStartRepeating.setOnClickListener(clickEvent);
                buttonStartOneTime = (Button) findViewById(R.id.button2);
               buttonStartOneTime.setOnClickListener(clickEvent);
                buttonStop = (Button) findViewById(R.id.button3);
               buttonStop.setOnClickListener(clickEvent);
                alarm = new alarmManagerBroadcastReceiver();
    
                // Kaç saniyede sonra çalacak bir alarm kurulmalı?
                period = 15;
             
    }
      android.view.View.OnClickListener clickEvent=new View.OnClickListener() {
        
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
             if (v.getId() == buttonStartRepeating.getId())
             {  
                  Intent i=new Intent(getApplicationContext(),y.class);
                  startActivity(i);
                // startRepeatingTimer(i);
                 
                 
             }else if(v.getId() == buttonStartOneTime.getId())
                     {
                 startOneTimeTimer();
              }else if(v.getId() == buttonStop.getId())
                  {
              cancelRepeatingTimer();
             }
            
        }
    };
    public void startRepeatingTimer()
        {
       
             // Tekrarlayan bir alarm kurulması
             Context context = this.getApplicationContext();
             if(alarm != null){
              alarm.SetRepeatingAlarm(context, period);
              

             }else{
              Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
           
                
             }
         }

    

         public void cancelRepeatingTimer()
         {
              // Kurulmuş olan son alarmın iptal edilmesi

              Context context = this.getApplicationContext();

              if(alarm != null){
               alarm.CancelAlarm(context);

              }else{
               Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();

              }
    
         }

    @Override
    public 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;
    }

}

 

**her sınıfın görebildiği değişkeni tanımladığım sınıf**

package com.example.alarmornek;

public class x {
    public static int degisken=0;

}

 

**mainactivity sınıfında setrepeating butonuna tıkladığımda açılacak y classı **

 

package com.example.alarmornek;

 

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class y  extends Activity{
TextView ad;
String  birlesmis;
private alarmManagerBroadcastReceiver alarm;
private int period;
int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.y);
        ad=(TextView)findViewById(R.id.textView1);
        alarm = new alarmManagerBroadcastReceiver();
        
        // Kaç saniyede sonra çalacak bir alarm kurulmalı?
        period = 15;
        startRepeatingTimer();
        
    }
    public void startRepeatingTimer()
    { 
   
         // Tekrarlayan bir alarm kurulması
         Context context = this.getApplicationContext();
         if(alarm != null){
             i++;
          alarm.SetRepeatingAlarm(context, period);
        
         // finish();
        // startActivity(getIntent());
         }else{
          Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
          
            
         }
     }

}

**mainactivity 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=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="56dp"
        android:layout_marginTop="30dp"
        android:text="Start Repeating" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="36dp"
        android:text="Start one time" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_below="@+id/button2"
        android:layout_marginTop="42dp"
        android:text="Stop alarm" />

</RelativeLayout>

**y activity xml**

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="102dp"
        android:layout_marginTop="103dp"
        android:text="TextView" />

</RelativeLayout>

 

 

Profile picture for user htcszgn
htcszgn
13.05.2014 - 12:00

**Alarm Managerin her 15 snyede çalışmasını sağlayan sınıf**

public class alarmManagerBroadcastReceiver extends BroadcastReceiver
{  y sinif=new y();

    int y=0;
@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
  //Acquire the lock
            wl.acquire();
            y++;
     // sinif.ad.setText(String.valueOf(y));
            Toast.makeText(context, "Alarm Çalıyor : )", Toast.LENGTH_LONG).show();
           
            
          //  sinif.ad.setText("nn");
            wl.release();
         // Manifesttede tanımladığımız receiver sayesinde periyot süresi sonunda onReceive metodu içine gelip burada çalıştırmak istediğimiz kod uygulamanın o an açık olup olmamasından bağımsız olarak çalıştırılabilir.
}

public void SetRepeatingAlarm(Context context, int period)
 {
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
   //C intent.putExtra(String.valueOf(i),String.valueOf(y++));
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
    //After after 5 seconds
    // Tekrarlayacak alarmın kurulması.Period milisaniye cinsinden oldugu icin birim cevrimi gerekli   
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + period*1000, 1000 * period , pi);
 
 }

public void SetOneTimeAlarm(Context context, int period)

 {
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
// Tek seferlik alarmın kurulması.Period milisaniye cinsinden oldugu icin birim cevrimi gerekli   

am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + period*1000, pi);

 }

public void CancelAlarm(Context context)
 {
     // Kurulu son alarmı ipta et
     Intent intent = new Intent(context, alarmManagerBroadcastReceiver.class);
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
     alarmManager.cancel(sender);
 }


}

 

**mainactivity sınıfım.diğer activity çağırdığım sınıf**

public class MainActivity extends Activity {

    private alarmManagerBroadcastReceiver alarm;
    private Button  buttonStartRepeating;
    private Button buttonStartOneTime;
    private Button buttonStop;
        private int period;
        private x degiskenim;
        int i=0;
       
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         // xml tarafından viewların çağrımı
        
            degiskenim.degisken=0;
              buttonStartRepeating = (Button) findViewById(R.id.button1);
                buttonStartRepeating.setOnClickListener(clickEvent);
                buttonStartOneTime = (Button) findViewById(R.id.button2);
               buttonStartOneTime.setOnClickListener(clickEvent);
                buttonStop = (Button) findViewById(R.id.button3);
               buttonStop.setOnClickListener(clickEvent);
                alarm = new alarmManagerBroadcastReceiver();
    
                // Kaç saniyede sonra çalacak bir alarm kurulmalı?
                period = 15;
             
    }
      android.view.View.OnClickListener clickEvent=new View.OnClickListener() {
        
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
             if (v.getId() == buttonStartRepeating.getId())
             {  
                  Intent i=new Intent(getApplicationContext(),y.class);
                  startActivity(i);
                // startRepeatingTimer(i);
                 
                 
             }else if(v.getId() == buttonStartOneTime.getId())
                     {
                 startOneTimeTimer();
              }else if(v.getId() == buttonStop.getId())
                  {
              cancelRepeatingTimer();
             }
            
        }
    };
    public void startRepeatingTimer()
        {
       
             // Tekrarlayan bir alarm kurulması
             Context context = this.getApplicationContext();
             if(alarm != null){
              alarm.SetRepeatingAlarm(context, period);
              

             }else{
              Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
           
                
             }
         }

    

         public void cancelRepeatingTimer()
         {
              // Kurulmuş olan son alarmın iptal edilmesi

              Context context = this.getApplicationContext();

              if(alarm != null){
               alarm.CancelAlarm(context);

              }else{
               Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();

              }
    
         }

    @Override
    public 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;
    }

}

 

**her sınıfın görebildiği değişkeni tanımladığım sınıf**

package com.example.alarmornek;

public class x {
    public static int degisken=0;

}

 

**mainactivity sınıfında setrepeating butonuna tıkladığımda açılacak y classı **

 

package com.example.alarmornek;

 

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class y  extends Activity{
TextView ad;
String  birlesmis;
private alarmManagerBroadcastReceiver alarm;
private int period;
int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.y);
        ad=(TextView)findViewById(R.id.textView1);
        alarm = new alarmManagerBroadcastReceiver();
        
        // Kaç saniyede sonra çalacak bir alarm kurulmalı?
        period = 15;
        startRepeatingTimer();
        
    }
    public void startRepeatingTimer()
    { 
   
         // Tekrarlayan bir alarm kurulması
         Context context = this.getApplicationContext();
         if(alarm != null){
             i++;
          alarm.SetRepeatingAlarm(context, period);
        
         // finish();
        // startActivity(getIntent());
         }else{
          Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
          
            
         }
     }

}

**mainactivity 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=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="56dp"
        android:layout_marginTop="30dp"
        android:text="Start Repeating" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="36dp"
        android:text="Start one time" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_below="@+id/button2"
        android:layout_marginTop="42dp"
        android:text="Stop alarm" />

</RelativeLayout>

**y activity xml**

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="102dp"
        android:layout_marginTop="103dp"
        android:text="TextView" />

</RelativeLayout>

 

 

picture-9626-1398797004.jpg
bakiabaci
12.05.2014 - 06:26

Merhaba Hatice,

Projenizin kodlarını paylaşırsanız size yardımcı olmaya çalışalım..

İyi çalışmalar..

hatice
13.05.2014 - 12:02
bunu yapmaya çalıştım ama yine aynı kaldı değeri