我在MyApp
类中定义了一个全局参数,用于重置所有活动中的某些值,我想为某些checkBoxes
和SeekBars
设置一些默认值但是我我无法在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
}
});
答案 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
方法setOnClickListener
时
setDefaultVarValue
仅在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();
}
});
}
}