Хотелось бы по кнопке останавливать код другой кнопки, где задержка

161
16 августа 2018, 17:50

у меня код у кнопки, где задержка на закрытие активити, как я бы мог по нажатию другой кнопки останавливать его?

package com.talk.talktools;
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
public class fragment1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment1, container, false);
        return v;
    }
    @Override
    public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ImageView imageView2 = view.findViewById(R.id.imageView2);
        ImageView imageView = view.findViewById(R.id.imageView);
       ImageView imageView3 = view.findViewById(R.id.imageView3);
       imageView3.setOnLongClickListener(new View.OnLongClickListener() {
           @Override
           public boolean onLongClick(View v) {
               Toast.makeText(view.getContext(), "Ты нашел пасхалку! Теперь закрытие приложения! :)", Toast.LENGTH_SHORT).show();
               Toast.makeText(view.getContext(), "У тебя десять секунд!", Toast.LENGTH_SHORT).show();
               Handler handler = new Handler();
               handler.postDelayed(new Runnable() {
                   public void run() {
                       getActivity().finish();
                   }
               }, 10000); //specify the number of milliseconds
               return false;
           }
       });
       View.OnClickListener ocltg = new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               String url = "SECRET";
               Intent h = new Intent(Intent.ACTION_VIEW);
               h.setData(Uri.parse(url));
               startActivity(h);
           }
       }; imageView3.setOnClickListener(ocltg);
       View.OnClickListener ocltgchat = new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               String url = "SECRET";
               Intent g = new Intent(Intent.ACTION_VIEW);
               g.setData(Uri.parse(url));
               startActivity(g);
           }
       }; imageView.setOnClickListener(ocltgchat);
       View.OnClickListener oclf0x1d = new View.OnClickListener() {
           @Override
           public void onClick(View v) {
         String url = "SECRET";
               Intent i = new Intent(Intent.ACTION_VIEW);
               i.setData(Uri.parse(url));
               startActivity(i);
           }
       }; imageView2.setOnClickListener(oclf0x1d);
    }
}
Answer 1

Создать переменную как параметр класса

boolean b = true;

При нажатии на кнопку отмены закрытия пиложения

b = false;

Код закрытия приложения

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    public void run() {
        if (b)
            getActivity().finish();
        }
    }, 10000); //specify the number of milliseconds
    return false;

Не забыть где-то снова менять значение переменной b, чтобы можно было всё таки закрыть приложение через 10 секунд

Помимо этого можно попробовать следующее

1.Измените

handler.postDelayed(Runnable r, long delayMillis) 

на

handler.postDelayed(Runnable r, Object token, long delayMillis)

2.Если кнопка Отмены была нажата то

removeCallbacks(Runnable r, Object token)

3.При этом необходимо создать Runnable не внутри, а внешним, так же, как и Handler handler. Ссылка для доп информации https://developer.android.com/reference/android/os/Handler

Answer 2
package com.talk.talktools;
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
public class fragment1 extends Fragment {
    boolean breakRun;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment1, container, false);
        return v;
    }
    @Override
    public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ImageView imageView2 = view.findViewById(R.id.imageView2);
        ImageView imageView = view.findViewById(R.id.imageView);
       ImageView imageView3 = view.findViewById(R.id.imageView3);
       imageView3.setOnLongClickListener(new View.OnLongClickListener() {
           @Override
           public boolean onLongClick(View v) {
               Toast.makeText(view.getContext(), "Ты нашел пасхалку! Теперь закрытие приложения! :)", Toast.LENGTH_SHORT).show();
               Toast.makeText(view.getContext(), "У тебя десять секунд!", Toast.LENGTH_SHORT).show();
               Handler handler = new Handler();
               handler.postDelayed(new Runnable() {
                   public void run() {
                        if(!breakRun){
                            getActivity().finish();
                        }
                   }
               }, 10000); //specify the number of milliseconds
               return false;
           }
       });
       View.OnClickListener ocltg = new View.OnClickListener() {
           @Override
           public void onClick(View v) {
                breakRun = true;
                String url = "SECRET";
                Intent h = new Intent(Intent.ACTION_VIEW);
                h.setData(Uri.parse(url));
                startActivity(h);
           }
       }; imageView3.setOnClickListener(ocltg);
       View.OnClickListener ocltgchat = new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               breakRun = true;
               String url = "SECRET";
               Intent g = new Intent(Intent.ACTION_VIEW);
               g.setData(Uri.parse(url));
               startActivity(g);
           }
       }; imageView.setOnClickListener(ocltgchat);
       View.OnClickListener oclf0x1d = new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               breakRun = true;
               String url = "SECRET";
               Intent i = new Intent(Intent.ACTION_VIEW);
               i.setData(Uri.parse(url));
               startActivity(i);
           }
       }; imageView2.setOnClickListener(oclf0x1d);
    }
}
READ ALSO
Импорт геометок из Google maps

Импорт геометок из Google maps

В приложении есть Google карта, каким образом сделать так, чтобы она отображала только геометки достопримечательностей?

194
Получить файл .jpg из .jar

Получить файл .jpg из .jar

Пытаюсь получить jpg изображение когда сделал build файл jar, делаю так:

148
Как узнать активен ли фрагмент/активити

Как узнать активен ли фрагмент/активити

В андроид приложении нужно реализовать функциональность чатаИнформация о входящем сообщении приходит через Firebase Push и сохраняется в локальной...

184
Java, определение “полиморфизм”

Java, определение “полиморфизм”

Изучаю JavaПонял что не могу нормально дать определение полиморфизму

150