- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在关注 Big Nerd Ranch 指南 Android,其中我正在构建一个显示一组问题的基本应用程序,你说对或错。有一个按钮“Cheat
”,您可以在其中作弊。如果您点击按钮 Cheat
查看答案,返回并输入正确答案,然后会有一个 toast
显示“Cheating is wrong”。这在垂直屏幕上工作正常,但假设我将屏幕旋转到水平,我查看答案并返回水平,我可以作弊。我不希望发生这种情况。
我的努力:使用 onSavedInstanceState
覆盖现有函数以在屏幕之间共享值并跟踪 onCreate
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
super.onSaveInstanceState(savedInstanceState);
Log.i(TAG, "onSaveInstanceState");
savedInstanceState.putBoolean(EXTRA_ANSWER_SHOWN, mAnswerIsTrue) ;
}
在onCreate
方法中,
if(savedInstanceState !=null)
{
mAnswerIsTrue = savedInstanceState.getBoolean(EXTRA_ANSWER_SHOWN);
setAnswerShownResult(mAnswerIsTrue);
}
这是我的代码:
package com.android.geoquiz;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class CheatActivity extends Activity
{
//Extras
public static final String EXTRA_ANSWER_IS_TRUE = "com.android.geoquiz.answer_is_true";
public static final String EXTRA_ANSWER_SHOWN = "com.android.geoquiz.answer_shown";
private static final String TAG="CheatActivity";
private static final String KEY_INDEX = "cheat";
private boolean mAnswerIsTrue;
private TextView mAnswerTextView;
private Button mShowAnswer;
private void setAnswerShownResult(boolean isAnswerShown)
{
Intent data = new Intent();
data.putExtra(EXTRA_ANSWER_SHOWN, isAnswerShown);
setResult(RESULT_OK, data);
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cheat);
mAnswerIsTrue = getIntent().getBooleanExtra(EXTRA_ANSWER_IS_TRUE, false);
mAnswerTextView = (TextView)findViewById(R.id.showAnswerButton);
setAnswerShownResult(false);
mShowAnswer = (Button)findViewById(R.id.showAnswerButton);
mShowAnswer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mAnswerIsTrue)
{
mAnswerTextView.setText(R.string.true_button);
}
else
{
mAnswerTextView.setText(R.string.false_button);
}
setAnswerShownResult(true);
}
});
if(savedInstanceState !=null)
{
mAnswerIsTrue = savedInstanceState.getBoolean(KEY_INDEX, false);
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
super.onSaveInstanceState(savedInstanceState);
Log.i(TAG, "onSaveInstanceState");
savedInstanceState.putBoolean(KEY_INDEX, mAnswerIsTrue) ;
}
@Override
public void onStart()
{
super.onStart();
Log.d(TAG, "onStart() called");
}
@Override
public void onPause()
{
super.onPause();
Log.d(TAG, "onPause() called");
}
@Override
public void onResume()
{
super.onResume();
Log.d(TAG, "onResume() called");
}
@Override
public void onStop()
{
super.onStop();
Log.d(TAG, "onStop() called");
}
@Override
public void onDestroy()
{
super.onDestroy();
Log.d(TAG, "onDestroy() called");
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
}
}
最佳答案
发生这种情况是因为一旦用户旋转屏幕就会调用您的 onCreate 有一个简单的解决方案可以阻止 onCreate 被调用 onOrientationChanged
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden" />
现在,当您执行此操作时,您必须覆盖 Activity 类中的一个方法,就像您拥有 onCreate 和 onPause 一样,您将需要添加另一个名为 onConfigChanged() 的方法;现在,只要您的屏幕旋转,就会触发此方法,而不是一次又一次地创建 Activity 。
将这个添加到你的 Activity 类中
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
}
希望这对您有所帮助。如果您需要任何帮助,请随时提出。
有关更多信息,请阅读这些帖子。
Activity restart on rotation Android
How do I disable orientation change on Android?
http://developer.android.com/guide/topics/manifest/activity-element.html#config
关于java - 当屏幕旋转时,用户可以欺骗 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25010612/
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我有一个只适用于火线摄像头的第三方视觉库,是否有可能以某种方式欺骗 libdc1394 认为连接了火线摄像头但通过 v4l 从 USB 网络摄像头传递帧? 最佳答案 鉴于 stackoverflow
在浏览网页时,我需要为我正在查看的网站伪造我的屏幕分辨率,但保持我的视口(viewport)不变(Chrome 或 FF 的模拟无法解决我的问题)。 例如,如果我转到 http://www.whati
假设情况。我在 *nix(linux、BSD 等)中有一个命令行程序。编写它是为了让您将文本文件作为参数传递给它 $ program file.txt 运行程序,它会查看 file.txt 中的文本。
我从欺骗中搜索了 proctecting .net 程序集并找到了 this post很有用。但是,我在帖子中看到了一个非常明显的矛盾。有一点表明,如果用户是同谋,强名称就没有用: But if th
我有一个已加密的 JWT,希望存储在 HttpOnly 安全 cookie 中并通过 SSL 发送。但是,由于我在第一次访问我的网站时没有设置 cookie,那么在我创建 cookie 之前,如何阻止
我想制作一个应用程序,作为第三方应用程序的便捷入口点,使用我的参数启动其 Activity 之一,而不是单击它来执行相同的操作。我对第三方应用程序有一些了解:我需要一个带有单个 .putExtra 的
我将 HtmlAgilityPack 用作自动化流程的一部分,以从现有内部网页中提取内容。问题是我需要让它认为 IsPostBack 是真的。 这是流程: 对页面进行初始调用并提取 HTML。 解析
我在 ARM Cortex-M0 的一些旧版 ROM 代码中遇到了挑战 ROM 代码有其数据存储部分,并且在某些时候它通过函数指针列表从其他 volatile 存储器调用函数。 我目前已用完添加代码的
我一直想知道是否有一种方法可以欺骗导航器、屏幕等 JS 对象,以便在页面请求时发送虚假数据。 我使用 C# 开发一个包含 GeckoFx 浏览器的应用程序,我想做这样的事情:每次我打开一个包含 JS
我想知道是否有一种方法可以将 SuperType 数组转换为 SubType 数组。像这样: SubType[] subArray = (SubType[])someSuperTypeArray; 我
我的所有功课都使用平板电脑,因为我没有一台好电脑,但网站通常以移动设备格式出现。有没有办法设置我的浏览器来告诉网站它是一台电脑,而不是平板电脑?如果可能的话,这是否会导致任何其他问题,例如禁用触摸屏或
我想按照类(class)大纲学习这个概念。我需要一些想法来进行 ICMP 欺骗。我在网上找到了 ICMP 欺骗程序,但我必须这样做:当主机 ping 一个未知的 ip 地址时,无论它是否存在,都必须有
我正在使用 PayPal Hosted Pages 构建一个注册系统。据我了解,我可以使用 Silent POST 功能让我的应用程序知道托管结帐页面上何时发生了成功的交易。我担心可能会欺骗此 POS
我正在尝试编写一个应用程序,它只是作为一个已经存在的网站的界面。没有 API,因此将进行大量的 POSTing、GETing 和 XML 解析。 问题 1:“您需要在浏览器中启用 JavaScript
我们已经使用带有设置 cookie 的 PHP 创建了一个数据库驱动的网站,现在需要防止 HTTP 欺骗,关于如何做到这一点有什么想法吗?我们是这方面的初学者,所以任何帮助都会很棒 最佳答案 您不能“
如果我将这两者都放入数据库中,是否足以防止站点访问者欺骗他们来自不同的 IP 地址? $ip1 = $_SERVER['HTTP_X_FORWARDED_FOR']; $ip2 = $_SERVER[
当我在一些表之间进行内部联接时,我遇到了一些查询抛出重复的问题。 本质上,我加入了一些标签,以及基于 videoId 的 channel (想想流派),这样一个特定的视频文件就可以有多个标签并成为多个
据我所知,没有什么可以限制任何开发人员对他们的信标进行编程以使用特定的 UUID、主要、次要或标识符。 如果我创建一个 UUID 为“foo”的 iBeacon,如何防止其他开发人员创建具有相同 ID
我希望构建一个简单的服务器来代理我网络网关处的 TCP 连接(无恶意),但 TCP 握手失败。 使用 netfilter,我已经设法更改传入 TCP 数据包的 IP 和端口,以便将它们转移到我的应用程
我是一名优秀的程序员,十分优秀!