我想做这样的事情:
if (total != 0) {
percentage = String.valueOf((count * 100) / total);
Log.e("Percentage", percentage);
myActivity.getSupportActionBar().setTitle("Progress: " + percentage + "%.");
}
但是,我无法致电getSupportActionBar()
,因为它显示Non-static method 'getSupportActionBar()' cannot be referenced from a static context
。我怎么解决这个问题?
更新
这是我公共类中的方法,我想调用上面的代码;
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
}
});
}
答案 0 :(得分:0)
投放您的活动可以解决您的问题。假设您的活动名称是YourCustomActivity。现在像下面一样施放Activity。希望它能奏效。
YourCustomActivity activity=(YourCustomActivity)myActivity;
activity.getSupportActionBar().setTitle("");
如果有效,请告诉我。
答案 1 :(得分:0)
您可以将activity参数传递给另一个类,并使用下面的活动功能;
public class CityModel {
Activity activity;
public CityModel(Activity activity) {
this.activity = activity;
}
private void doIt() {
((YourActivity) activity).changeTitle("New Title");
}
}
并定义此类实例,如下所示;
public class YourActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CityModel model = new CityModel(this); // this-> Your activity.
}
public void changeTitle(String newTitle){
getSupportActionBar().setTitle(newTitle);
}
}
希望它有所帮助。
答案 2 :(得分:0)
感谢其他答案,但它们都不符合我的要求。
我通过将代码移动到相关活动并从那里设置标题来解决它。但是,主要的变化是从侦听器方法发布百分比值,在我的情况下: onItemCheckBoxChecked 。这意味着每次用户选中一个框(在文本视图或其他情况下可能是其他侦听器),百分比就会实时计算。我还将百分比变量公之于众。
答案 3 :(得分:-1)
因为getSupportActionBar()
不是静态方法。如果您在静态类或静态方法中使用此方法,则会出现以下错误。
无法从静态上下文引用非静态方法
getSupportActionBar()
如果您想要使用常用方法,可以考虑在您的活动中创建公共方法并使用fragments
进行调用。
public void setToolBar(String title) {
getSupportActionBar().setTitle(title);
}
如果您有活动,只需拨打以下代码即可。
getSupportActionBar().setTitle(title);
编辑我的代码:
public static void setToolbar(final AppCompatActivity activity,String title){
activity.getSupportActionBar().setTitle(title);
}
编辑代码: 我的RecyclerViewAdapter类:
public class ExploreGalleryAdapter extends RecyclerView.Adapter<ExploreGalleryAdapter.ViewHolder> {
private AppCompatActivity activity;
private ArrayList<ExploreGalleryModel> exploreGalleryModelArrayList;
// private String status;
public ExploreGalleryAdapter(AppCompatActivity activity, final ArrayList<ExploreGalleryModel> exploreGalleryModelArrayList, final String status) {
this.activity = activity;
this.exploreGalleryModelArrayList = exploreGalleryModelArrayList;
// this.status = status;
}
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
activity.getSupportActionBar().setTitle(title);
}
});
}