在按钮单击上设置全局变量值

时间:2015-01-15 08:22:15

标签: android global-variables onclicklistener

我在MyApp类中定义了一个全局参数,用于重置所有活动中的某些值,我想为某些checkBoxesSeekBars设置一些默认值但是我我无法在setDefaultvarValue中调用函数setOnclickListner()。 以下是myApp.class的代码:

class MyApp extends Application {

 private int setDefault=0;

 public int getDeafultVarValue() {
    return setDefault;
 }

public void setDefaultVarValue(int val) {
    setDefault = val;
 }
}

setonClickListner看起来像这样:

 Button reset_btn = (Button) rootView.findViewById(R.id.reset_button);
    reset_btn.setOnClickListener(new OnClickListener() {

        ((MyApp) this.getApplication()).setDefaultVarValue(1);


        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub              
        }
    });

7 个答案:

答案 0 :(得分:3)

setDefaultVarValue class:

调用MyApp方法
 @Override
  public void onClick(View v) {
     // TODO Auto-generated method stub     
   MyApp objMyApp = (MyApp)v.getContext().getApplicationContext();   
   objMyApp.setDefaultVarValue(1);      
 }

答案 1 :(得分:1)

请将您的代码更改为此。

Button reset_btn = (Button) rootView.findViewById(R.id.reset_button);
    reset_btn.setOnClickListener(new OnClickListener() {      
        @Override
        public void onClick(View v) {

            ((MyApp)YourActivityname.this.getApplicationContext()).setDefaultVarValue(1);

        }
    });

如果您正在通过该活动致电。将 YourActivityname 替换为激活名称。如果您有任何疑问,请告诉我。

答案 2 :(得分:1)

setDefaultVarValue方法setOnClickListenersetDefaultVarValue仅在setOnClickListener

中调用一次

如果您希望在点击按钮时调用setDefaultVarValue,则应将其移至onClick方法

答案 3 :(得分:0)

将此行((MyApp) this.getApplication()).setDefaultVarValue(1);移到onClick()

所以它应该是:

reset_btn.setOnClickListener(new OnClickListener() {       

    @Override
    public void onClick(View v) {
           ((MyApp) this.getApplication()).setDefaultVarValue(1);
    }
});

答案 4 :(得分:0)

将setDefault方法移动到onClick方法中。一切都应该工作正常。

答案 5 :(得分:0)

尝试这样做:((Activity) mContext).getApplication(...)或使setDefaultVarValue方法静态它将解决您的问题。

答案 6 :(得分:0)

我找到了解决方案。 getter setter方法帮助我声明了我的r变量,并且我能够在每个函数中控制我的变量。解决方案,即使代码看起来很难看。

    private TextView broj;
    private TextView tekst1;
    private TextView posljednjeVrijeme;
    String stringTStamp;
    private int r;

    public int getDefaultR(){
        return r;
    }

    public void setDefaultR(int r){
        this.r=r;
    }




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                /**
                 * Ponavlja radnju svakih 4 sekunde, učitava vrijeme systema
                 */
                        final Handler ha=new Handler();
                        ha.postDelayed(new Runnable() {

                            @Override
                            public void run() {
                                Long tStamp = System.currentTimeMillis()/1000;
                                stringTStamp = tStamp.toString();
                                Toast.makeText(MainActivity.this, stringTStamp, Toast.LENGTH_SHORT).show();
                                SharedPreferences preferences3 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                                SharedPreferences.Editor editor = preferences3.edit();
                                editor.putString("posljednjeVrijeme", stringTStamp);
                                editor.apply();



                                ha.postDelayed(this, 4000);
                            }
                        }, 4000);
                /**
                 * **************************************************************
                 */



        broj = (TextView)findViewById(R.id.broj);
        posljednjeVrijeme = (TextView)findViewById(R.id.posljednjeVrijeme);

        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        final String name = preferences.getString("vrijednost je ", "");
        final String name2 = preferences.getString("posljednjeVrijeme", "");
        if(!name.equalsIgnoreCase(""))
        {

            broj.setText("vrijednost je "+name);
            posljednjeVrijeme.setText("Zadnje vrijeme "+name2);
        }



        Long tStamp = System.currentTimeMillis()/1000;
        stringTStamp = tStamp.toString();

        if(Integer.parseInt(stringTStamp)-Integer.parseInt(name2)<10){
            r = 0+Integer.parseInt(name);
            broj.setText("vrijednost je "+r);
        }

        else if(Integer.parseInt(stringTStamp)-Integer.parseInt(name2)>10){
            Toast.makeText(this, "POZDRAV GAZDA DUGO SE NE VIDJEH, UGASIO SI ME PRIJE " + (Integer.parseInt(stringTStamp)-Integer.parseInt(name2))+ " SEKUNDI" , Toast.LENGTH_SHORT).show();
            r = 0+Integer.parseInt(name)-10;
            broj.setText("vrijednost je "+r);

        }else{}





        tekst1 = (TextView)findViewById(R.id.tekst1);
        final SharedPreferences preferences2 = PreferenceManager.getDefaultSharedPreferences(this);
            tekst1.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    r = r+1;


                    broj.setText("vrijednost je "+r);

                    String s= String.valueOf(r);
                    SharedPreferences.Editor editor = preferences2.edit();
                    editor.putString("vrijednost je ", s);
                    editor.apply();
                }
            });

    }
}