- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个 Activity ,MainActivity
(包含 MainFragment
)和 SearchActivity
。
当用户单击 MainActivity
中的搜索按钮时,我使用 startActivityForResult()
打开 SearchActivity
。然后,用户输入查询,我将该查询作为结果返回到 MainActivity
,其中我有一个 searcher
对象,该对象实际上使用查询执行搜索。
不过,我在以下情况下遇到了问题:我位于 MainActivity
中并单击搜索按钮。我转到 SearchActivity
并继续旋转手机。我输入查询并返回到 MainActivity
,它崩溃了,因为 searcher
为 null。
所以我知道,当我旋转屏幕 MainActivity
时,它会被销毁并重新创建,并且我正在保存实例状态,我遇到的问题是 onActivityResult()
在 MainFragment
中的 onActivityCreated()
之前被调用。在处理结果之前,如何确保 MainFragment
恢复到之前的状态?
编辑:
这是我的(经过大量编辑;用于工作)代码。
主要 Activity
public class MainActivity extends AppCompatActivity {
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mainFragment = getSupportFragmentManager().getFragment(savedInstanceState, "fragment");
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getSupportFragmentManager().putFragment(outState, "fragment", mainFragment);
}
}
主要 fragment
public class MainFragment extends Fragment {
private Searcher searcher;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
searcher = new Searcher();
if (savedInstanceState != null) {
// restore state
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (data.hasExtra("query")) {
String query = data.getStringExtra("query");
searcher.search(query);
}
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// save state
}
}
最佳答案
例如,当我在使用 WebView 时遇到问题时,我会这样做:
@Override
protected void onSaveInstanceState(Bundle outState ) {
super.onSaveInstanceState(outState);
mWebView.saveState(outState); //Do your own action
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mWebView.restoreState(savedInstanceState); // Do your own action
}
这可能有助于解决崩溃问题:
if (savedInstanceState == null)
{
mWebView.loadUrl("https://goo.gl/6wE4Di"); //do your own action
}
关于java - startActivityForResult 之后 Android 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35492850/
如果我调用 startActivityForResult 并且启动的 Activity 也在另一个 Activity 上调用 startActivityForResult, 是否有可能停止第一个 Ac
Android Fragment 中 startActivityForResult() 与 getActivity().startActivityForResult() 之间有什么区别?在 Fragm
我正在尝试改进一个实际代码,该代码通过 Android 手机与带有 Arduino(电子微 Controller )的 Atmega 建立蓝牙连接。我可以接收数据并将数据发送到微 Controller
我刚开始学习 android 编程,但我在启动 Activity for Result(使用 onActivityResult()、setResult())时遇到问题。 首先,有三个 Activity
我想让谷歌登录到我的应用程序,但我收到了这个错误。 startActivityForResult() deprecated in java 这是我的代码: val signInIntent =
我有一个有 15 个级别的问答游戏。在每个级别之后,我都会显示一个弹出窗口,其中包含一些信息(游戏级别和一些级别规则)。 15 级后,会出现一个最终弹出窗口,其中包含用户赢得了多少积分的信息。我使用
这个问题已经有答案了: Android contacts Display Name and Phone Number(s) in single database query? (3 个回答) 已关闭
我有两个按钮和音频 ListView ,对于第一个按钮,我使用 LongClick 和 startActivityForResult 方法从 MediaPlayer 的另一个 Activity 获取字
我正在编写一个 Android 应用程序,并且我有一个主屏幕,可以启动不同的播放模式(不同的 Activity )。我想开始每项 Activity 以获得结果startActivityForResul
在我的应用程序中,我正在尝试使用 fragment 中的 RecognizerIntent 启动谷歌语音转文本。请求代码的值是 1010,但在 startActivityForResult 上返回的请
我正在尝试使用 startActivityForResult 响应 Activity 的结果。我得到了预期的结果,但不确定如何回应结果。我想做的是根据结果调用不同的 ArrayList(这是一种资源)
我正在尝试从 HTML5 和 JavaScript 调用相机。我的代码如下。但是我得到空指针异常。 主要 Activity : public void onCreate(Bundle savedIn
我正在学习 android 并且很想知道 startActivityForResult() 是否也包含 startActivity() 的属性,即它是否可以用于发送数据,如 startActivity
所以我有两个类(class)。我想做的是将数据从 MainActivity 发送到 Main2,在 Logcat 中登录,然后将控制权返回给 MainActivity 以便用一些其他数据再次重复该步骤
我有以下代码和两个 Activity ,其中我在 MainActivity 中有一个 ListActivity,然后是 AddItemsActivity 以动态地将项目添加到 ListActivity
当我在一个新 Activity 中写一个国家时,我得到了家庭作业来做到这一点(结果)它会把它写在主要 Activity 中,我写的颜色和新 Activity 会将文本颜色更改为我写的颜色。但是“确定”
是否可以从状态栏通知中使用 startActivityForResult()? 假设我有一个 Activity A,它在某些事件中使用 startActivityForResult() 启动 Acti
我想启动 map Activity 并获取位置结果。这是否可以在不使用 MapView 且不需要谷歌地图库的情况下实现? 最佳答案 是的,这是可能的。您应该将“onclick”事件监听器添加到您的 m
我是 android 的新手,有人可以帮助我吗,以下是我尝试运行以扫描条形码的代码,但是每当我单击按钮时它都会出错,它说强制关闭我应该做什么请帮助我。 this.btnCheck = (Button)
我正在使用 StartActivityForResult 进行多项 Activity 。我的主要 Activity 是初始化它。在我的第二个 Activity 中,我输入了一些值并传递给第三个 Act
我是一名优秀的程序员,十分优秀!