开始虚拟活动

时间:2012-06-19 21:15:37

标签: android android-activity

我最近开始使用Android编码,并希望创建一个用于更改屏幕亮度的小程序... 嗯..我知道已经有一些关于它的问题,但我尝试了这里建议的一切,真的不知道我怎么能解决我的问题:) 我知道你必须在设置亮度后“刷新”屏幕。在这一点上,我的问题开始......我已经创建了某种虚拟活动,并且在我的主要活动中也有一个意图,但似乎意图没有开始虚拟活动...继承我主要的相关部分活性:

button1.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Settings.System.putInt(getContentResolver(),
            Settings.System.SCREEN_BRIGHTNESS, 255);

            Intent in = new Intent(Test.this,DummyBrightnessActivity.class); //it is working...
            startActivity(in); //it is working...
        }

和虚拟代码:

public class DummyBrightnessActivity extends Activity{
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    this.finish();

}

}

manifest.xml:

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".Test"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.Test.DummyBrightnessActivity"
        android:taskAffinity="com.Test.Dummy"
        android:excludeFromRecents="true"
        android:theme="@style/EmptyActivity"></activity>
</application>

可能相关,styles.xml:

<resources>

<style name="EmptyActivity" parent="android:Theme.Dialog">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Toast</item>
    <item name="android:background">#00000000</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:colorForeground">#000</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:windowIsFloating">true</item>
</style>


</resources>

哦,顺便说一句...我没有得到任何错误...假人不会开始(我想是这样,因为当我运行它没有android:excludeFromRecents =“true”然后它不会出现在最近的应用程序列表中。

我希望有人可以帮助我...... 祝你有愉快的一天

//编辑:嗯......看起来代码工作正常xD         只是重新查看并放置一些文本而不是“finish()”,活动正常运行......但我认为完成必须在那里:/         也许您对如何“重置”屏幕有任何建议?看起来我理解其中一个教程错了......

// EDIT2: 嗯...我在前8小时内无法回答我自己的问题:D 所以我在这里发布:

谢谢大家的帮助和提示,但现在我找到了自己的解决方案:D 这个:Refreshing the display from a widget? “启动空活动并执行WindowManager刷新”部分对我有用。 我在问这里之前遇到过这种情况,但当时我无法让它发挥作用:D 所以,无论如何,非常感谢你;) 这只是编写“一个小的,快速编码的初学者应用程序”的一个很难的例子;)

2 个答案:

答案 0 :(得分:0)

您可能还想考虑在View上调用invalidate(),而不是启动和关闭新的。

我不确定它是否适用于这种情况,因为我没有尝试更改屏幕亮度。但是,根据http://developer.android.com/reference/android/view/View.html#invalidate(),在视图上调用invalidate()将导致调用onDraw(),这听起来像你想要的。

答案 1 :(得分:0)

我认为这应该有效。当我从一个页面移动到另一个页面时,我会使用它。它只是识别类并启动活动,运行您的新活动将要执行的任何操作。

public void onClick(View v) {
    // (IN THIS EXAMPLE) IDENTIFIES WHAT IS BEING PRESSED 
    if(v.getId() == R.id.activity) {
        // STARTS THE OTHER ACTIVITY
        Intent i = new Intent(this,Activity2.class);
        this.startActivity(i);
    }

此外,请删除finish();,因为您的活动会同时初始化和关闭。 确保设置内容视图(setContentView(R.layout.main);),以便判断您开始的活动是否实际带您进入所需的页面。

编辑:您说未检测到按下按钮。尝试直接将OnClickListener实现到你的活动android这样导入它。

public class MyApplication extends Activity implements OnClickListener {

此外,请确保您的按钮已正确初始化。请尝试删除此代码:button1.setOnClickListener(new OnClickListener(),然后将其添加到您的代码中:

button1 = (Button) findViewById(R.id.activity);
button1.setOnClickListener(this);