2012-06-19 23 views
0

这是一个完美工作的类,直到我想添加一个功能为止,代码编译然后在执行后立即崩溃。
问题在于我想在这个类中实现的componentAnalyzer类。我不知道为什么它不会工作,因为我以完全相同的方式在另一个课程中实施了这个componentAnalyzer,并且它运行得非常漂亮。即时应用程序崩溃,无论何时添加单行代码

我认为它是一个小错误,但不确定。我评论了造成问题的部分,因为剩下的部分工作,不应该触及。

将使用componentAnalyzer的方法位于代码的末尾。我剪掉了所有正在工作的内容,以便更轻松地看到它。

public class PowerMonitorActivity extends Activity implements SeekBar.OnSeekBarChangeListener { 
    private static boolean instantiated = false; 

    //private static ComponentAnalyzer componentAnalyzer; 
    //private Context context; 

    private Button changeGPSButton; 
    private Button changeAudioButton;  
    private Button locationUpdateButton;   
    private SeekBar brightnessSeekBar; 
    private int screenBrightness = 123;   
    private Handler cpuHandler = new Handler(); 
    private CPUMonitor cpuMonitor = new CPUMonitor(); 
    private int updateTime = 1000; 

    private Handler totalPowerHandler = new Handler();   
    private MediaManager mediaManager = new MediaManager(); 
    private boolean requestingLocation = false; 

    private boolean wifiIsTransmitting = false; 
    private boolean wifiIsConnected = false; 
    private boolean cellIsTransmitting = false; 
    private boolean cellIsConnected = false; 
    private boolean isLogging = false; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //Bundle extras = getIntent().getExtras(); 
     if (!instantiated) { 
      instantiated = true; 
       //componentAnalyzer = new ComponentAnalyzer(context, extras); 
     } 

     // Create GPS button - note that location settings cannot be changed directly 
     // in a program. Rather, a settings screen is shown when this button is pressed. 
     changeGPSButton = (Button)findViewById(R.id.changeGPS); 
     changeGPSButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       showGPSOptions(); 
      } 
     }); 

     totalPowerHandler.removeCallbacks(updatePower); 
     totalPowerHandler.postDelayed(updatePower, 1000); 
    } 

    private Runnable updateCpu = new Runnable() { 
     public void run() { 
      float util = cpuMonitor.getUtil(); 
      int rutil = Math.round(100*util); 

      TextView cpuTextView = (TextView)findViewById(R.id.cpuTextView); 
      cpuTextView.setText(rutil+"%");  
      cpuHandler.postDelayed(this, updateTime); 
      } 
    }; 


    private Runnable updatePower = new Runnable() 
    { 
     public void run() 
     { 
      //float testPower = componentAnalyzer.getWifiPower();; 

      TextView totalPowerView = (TextView)findViewById(R.id.totalPowerTextView); 
      //totalPowerView.setText(testPower+"mW"); 

      totalPowerHandler.postDelayed(this, 1000); 
     } 
    };   
+0

您在Catlog中获得的例外是什么? –

回答

1

你有没有初始化context?在当前的代码示例中contextnull,当ComponentAnalyzer被实例化时。

+0

+1原因必须是这个................ –

+0

ooops对不起,应该是这个 – user1465975

+0

componentAnalyzer = new ComponentAnalyzer(this,extras); – user1465975

0

对于我的观点,你的应用上下文是空(你忘了为当前活动或应用程序指定参考上下文)

有问题的行删除注释,

现在看这些线路根据下面给出

Bundle extras = getIntent().getExtras(); 
     if (!instantiated) { 
      instantiated = true; 
       componentAnalyzer = new ComponentAnalyzer(context, extras); // Here context is null 
     } 

变化这一点,

Bundle extras = getIntent().getExtras(); 
     if (!instantiated) { 
      instantiated = true; 
      if(extras != null) 
      componentAnalyzer = new ComponentAnalyzer(PowerMonitorActivity.this, extras); 
      else Log.e("PowerMonitorActivity","Bundle extras is null"); 
     } 
相关问题