【问题标题】:Android Battery Stats in Fragment ActivityFragment Activity 中的 Android 电池统计信息
【发布时间】:2015-02-18 17:11:32
【问题描述】:

有关该主题的所有教程似乎都假设您正在使用基本活动来检索电池信息。我正在尝试从片段活动中获取信息。我已经弄清楚这是如何在单个活动中获得我正在寻找的东西。

public class Main extends Activity {
private TextView batteryTxt;
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context ctxt, Intent intent) {
  int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
  batteryTxt.setText(String.valueOf(level) + "%");
}
};
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.main);
batteryTxt = (TextView) this.findViewById(R.id.batteryTxt);
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
}

但是,我无法弄清楚需要进行哪些更改才能使其适合片段活动,因为它似乎是一个稍微不同的过程。

public class HomeFragment extends Fragment {

public HomeFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_home, container, false);

    return rootView;
}
}

【问题讨论】:

  • mBatInfoReceiver 移动到HomeFragment 并在onCreateView 中调用registerReceiver

标签: java android fragment battery


【解决方案1】:
public class HomeFragment extends Fragment {

private TextView batteryTxt;
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context ctxt, Intent intent) {
  int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
  batteryTxt.setText(String.valueOf(level) + "%");
}
};

public HomeFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    batteryTxt = (TextView) rootView.findViewById(R.id.batteryTxt);
    getActivity().registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    return rootView;
}
}

【讨论】:

  • 在第一个示例中,我获取电池百分比并将其显示在 TextView 中。 batteryTxt.setText(String.valueOf(level) + "%"); 所以它可能会说 25%。我希望能够从片段活动中做到这一点。我不知道代码(来自示例 1)如何适合第二个示例以产生相同的结果。
  • 感谢您的帮助。它让我走上了寻找解决方案的道路,但我需要添加更多代码来实现我想要的(在下面的帖子中)
【解决方案2】:

设法获得了一个基本的工作示例。

public class HomeFragment extends Fragment {
private TextView batteryTxt;
int health = 0;


public HomeFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_home, container, false);

    return rootView;
}

@Override
public void onResume() {
    super.onResume();

    batteryTxt=(TextView)getActivity().findViewById(R.id.batteryTxt);
    setare();

}

public void setare(){

    batteryTxt.setText("Health: " + health + "%");



}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getActivity().registerReceiver(this.batteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}

private BroadcastReceiver batteryInfoReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        health= intent.getIntExtra(BatteryManager.EXTRA_HEALTH,0);


    }
};

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多