第二个活动未启动

时间:2016-01-25 23:33:45

标签: android

我正在阅读BigNerdRanch一书,以提高Android熟练程度。经过几天和几天的运行代码并让我的屏幕昏暗在我身上后,我决定添加一个命令来唤醒/取消调暗屏幕,这样我就不必不断地触及并点击极其暗淡的省电屏幕了为了检查我的计划。

这导致了一大堆谷歌,StackOverflow等搜索我将在本文底部附上的最相关的内容。我现在面临的问题是回到基本问题:

我的第二个活动没有启动,我知道因为我在代码中的任意点放置的断点都没有捕获。我不明白为什么。

以下是我的启动器活动代码的相关部分:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fragment);

    //screen refresher start
    android.provider.Settings.System.putInt(getApplicationContext().getContentResolver(),
            Settings.System.SCREEN_BRIGHTNESS, 255);

    WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.screenBrightness = 255; // 100 / 100f;
    getWindow().setAttributes(lp);

    Intent k = new Intent(SingleFragmentActivity.this, RefreshScreen.class);
    startActivity(k);
    //screen refresher end

    FragmentManager fm = getSupportFragmentManager();
    Fragment fragment = fm.findFragmentById(R.id.fragment_container);
    if (fragment == null){
        fragment = createFragment();
        fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
    }
}

这是第二个活动的代码

public class RefreshScreen extends Activity {

int x = 5;

protected void OnCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    this.finish();
    return;
    }
}

我把断点放在以下位置:

  1. 始终有效。

    startActivity(K);

  2. 永远不会到达。

    int x = 5;

  3. 永远不会到达。

    super.onCreate(savedInstanceState);

  4. 永远不会到达。

    返回;

  5. 如果出于某种原因,我试图做的事情会对你有帮助,这里是相关的链接。

    Changing screen brightness programmatically (as with the power widget)

3 个答案:

答案 0 :(得分:1)

更改您的第二项活动:

public class RefreshScreen extends Activity { 
    int x = 5; 
    public void onCreate(Bundle savedInstanceState){ 
        super.onCreate(savedInstanceState);
        this.finish();
    }
}

说明: 1.受保护的修饰符会导致活动在被调用时不会打开。 2. OnCreate()是错误的。它应该是onCreate() 3. return();完成后();没用了。

答案 1 :(得分:1)

检查第二个活动中的方法名称,它应以小写字母开头:

@Override
protected void onCreate(Bundle savedInstanceState)

答案 2 :(得分:1)

虽然发布的解决方案适用于我的主要问题,“使用OnCreate而不是onCreate”我想跟进并说我解决了我正在处理的最初问题。事实证明,我正在咆哮错误的树,希望以程序方式调整每次运行程序的亮度,而我发现WakeLock同样可以解决我的问题,因为它在编程时保持屏幕最大亮度插入式充电,不关心电池寿命。

这是我在名为BrightScreen.java的Class I中使用的代码,我提醒一个问题,如果电池电量低于50%,那么在手机被收费超过50%之前不会再次唤醒WakeLock正在研究低安培数USB端口。

//screen brightness refresh start
    PowerManager pm =
            (PowerManager) getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl =
            pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "WakeAct");

    //Retreive the current charge status from the BatteryManager sticky Intent
    IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    Intent batteryStatus = getApplicationContext().registerReceiver(null, ifilter);

    int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

    float batteryPercent = level / (float)scale;

    if (batteryPercent > 50){
        wl.acquire();
    } else {
        if (wl.isHeld()){
            wl.release();
        }
    }
    //screen brightness refresh end

我希望这可以帮助那些人。两个关键组件是wl.acquire()和wl.release()。