相关疑难解决方法(0)

Android:如何获得模态对话框或类似的模态行为?

这些天我正在研究在Android中模拟模态对话框.我已经google了很多,有很多讨论,但很遗憾没有太多的选择来获得它的模态.这里有一些背景,
对话框,模态对话框和Blockin
对话框/ AlertDialogs:如何在对话框启动时"阻止执行"(.NET风格)

没有直接的方法来获得模态行为,然后我想出了3个可能的解决方案,
1.使用对话框主题的活动,就像这个线程所说的那样,但我仍然无法使主要活动真正等待对话活动返回.主要活动转为停止状态,然后重新启动.
2.构建一个工作线程,并使用线程同步.但是,对于我的应用程序来说,这是一个巨大的重构工作,现在我在主UI线程中有一个主要活动和服务.
3.当存在模态对话框时,在循环内接管事件处理,并在对话框关闭时退出循环.实际上,这是构建一个真正的模态对话框的方式,就像它在Windows中的确切做法一样.我仍然没有这样的原型.

我仍然想用一个以对话为主题的活动模拟它,
1.通过startActivityForResult()启动对话活动
2.从onActivityResult()获取结果
这里有一些来源

public class MainActivity extends Activity {

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

    MyView v = new MyView(this);
    setContentView(v);
}

private final int RESULT_CODE_ALERT = 1;
private boolean mAlertResult = false;
public boolean startAlertDialog() {
    Intent it = new Intent(this, DialogActivity.class);
    it.putExtra("AlertInfo", "This is an alert");
    startActivityForResult(it, RESULT_CODE_ALERT);

    // I want to wait right here
    return mAlertResult;
}

@Override
protected void onActivityResult (int requestCode, int resultCode, …
Run Code Online (Sandbox Code Playgroud)

android synchronization modal-dialog android-activity

53
推荐指数
6
解决办法
9万
查看次数

按下主页按钮时的呼叫方法

我的一个Android活动中有这个方法:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if(keyCode == KeyEvent.KEYCODE_BACK)
    {
        Log.d("Test", "Back button pressed!");
    }
    else if(keyCode == KeyEvent.KEYCODE_HOME)
    {
        Log.d("Test", "Home button pressed!");
    }
    return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)

但是,即使KEYCODE_HOME有效,log方法也不会触发.这适用于后退按钮.有谁知道这是为什么以及如何使这个工作?

android menu button android-sdk-1.6

52
推荐指数
4
解决办法
13万
查看次数

覆盖主页按钮 - 如何摆脱选择?

创建一个Intent以便MyActivity对用户做出反应时,使用XML标记很容易按下Home键.

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
Run Code Online (Sandbox Code Playgroud)

我想知道如何避免在主屏幕上选择"你想要使用什么活动"?HTC已经使其"Touch Flo"(Sense)覆盖默认的"开始"活动,如果我想通常使用"开始"或"TouchFlo",我永远不会得到问题.但是,当我添加自己的Activity时,我总能得到问题.

是的,我知道我可以检查"将其作为标准使用" - 检查框,但这不是我现在想要的.所以,问题是:我可以使系统覆盖其他所有内容并始终使用MyActivity作为默认值吗?

接下来,我真的只想在我的应用程序运行时覆盖正常的主屏幕.如果它没有运行,一切都应该正常工作,即MyActivity不应该与Home按钮相关联.

任何想法都会很棒.

android

21
推荐指数
2
解决办法
3万
查看次数