我正在使用兼容性库中的ViewPager.我从市场报告中经常得到这个例外.
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1242)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1253)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:535)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:519)
Run Code Online (Sandbox Code Playgroud)
什么可能导致它的想法?
我一直在关注Android教程并创建了MyFirstApp(请参阅http://developer.android.com/training/basics/firstapp/index.html),我可以在模拟器上启动应用程序,但输入消息后点击" 发送 "我在下面的代码中的这一行得到一个由NullPointerException引起的IllegalStateException:
String message = editText.getText().toString();
Run Code Online (Sandbox Code Playgroud)
在调试时,很明显此时editText为null,但我无法理解为什么,或者我在本教程中遗漏的任何内容.
我的MainActivity类:
package com.example.myfirstapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
/**
* <p>Main Activity class for the App</p>
*
* @author - thebloodguy
*/
public class MainActivity extends Activity {
//~ ----------------------------------------------------------------------------------------------------------------
//~ Static fields/initializers
//~ ----------------------------------------------------------------------------------------------------------------
/** Key to the extra message data in the sendMessage intent */
public static …Run Code Online (Sandbox Code Playgroud) java android nullpointerexception android-virtual-device illegalstateexception
我正在寻找一种通用的方法来迎合这个例外.如果用户例如非常快速地保持切换活动,则总会发生这种情况.因为很明显有很多地方我们会尝试访问活动引用,当它为null时,应用程序会因此异常而崩溃.一种方法是每次访问活动参考时检查"isFinishing()",我想知道是否有另一种更好和通用的方法来解决应用程序级别的这个问题.
请原谅我,如果我的问题听起来很愚蠢或没有任何意义,但我想在问:)没有害处.
在LoginActivity.java类中,当用户单击注册按钮时,代码将登录会话设置为true,然后将活动从LoginActivity切换到MainActivity.这是登录代码段.
case(R.id.login):
String email = etEmail.getText().toString();
String password = etPassword.getText().toString();
if(email.trim().length() > 0 && password.trim().length() > 0) {
loginManager.checkLogin(email, password);
pDialog.setMessage("Logging in..");
showDialog();
session.setLogin(true);
if(loginManager.isLoginSuccessful()) {
hideDialog();
Toast.makeText(this, getResources().getString(R.string.welcome_msg), Toast.LENGTH_LONG).show();
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
finish();
} else {
Toast.makeText(this, loginManager.getErrorMessage(), Toast.LENGTH_LONG).show();
}
} else if(email.trim().length() < 1) {
Toast.makeText(this, "Please enter the email", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Please enter the password", Toast.LENGTH_SHORT).show();
}
break;
Run Code Online (Sandbox Code Playgroud)
这是处理登录过程的LoginManager.java文件.我使用OkHttp作为HTTP库.
public class LoginManager {
private final String TAG_LOGIN = …Run Code Online (Sandbox Code Playgroud) 在运行时,在解密密文时,使用 Cipher not initialized 消息获取 java.lang.IllegalStateException 我的代码如下:
public String decrypt(String cipherText) throws SecurityException {
String clearText = null;
try {
cipher = Cipher.getInstance("AES/OFB/NoPadding");
byte[] cipherTextBytes = Base64.decodeBase64(cipherText.getBytes());
byte[] iv = ArrayUtils.subarray(cipherTextBytes, 0, INIT_VECTOR_LENGTH);
cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(iv));
byte[] decryptedBytes = cipher
.doFinal(ArrayUtils.subarray(cipherTextBytes, INIT_VECTOR_LENGTH, cipherTextBytes.length));
clearText = new String(decryptedBytes, CHARACTER_ENCODING).trim();
} catch (InvalidKeyException | IllegalBlockSizeException | BadPaddingException | UnsupportedEncodingException
| NoSuchAlgorithmException | NoSuchPaddingException | InvalidAlgorithmParameterException e) {
throw new SecurityException(e);
}
return clearText;
}
Run Code Online (Sandbox Code Playgroud)
线程“pool-5-thread-3”中的异常java.lang.IllegalStateException:密码未在javax.crypto.Cipher.doFinal(Cipher.java:2156)处的javax.crypto.Cipher.checkCipherState(Cipher.java:1749)处初始化)
这是间歇性问题,一段时间后它解密密文并按预期工作。
java encryption multithreading cryptography illegalstateexception
我想从 android 上的 firebase 文件夹下载所有文件。
这是我的代码
try {
StorageReference reference = storage.getReference().child("Ringtone");
reference.listAll().addOnCompleteListener(new OnCompleteListener<ListResult>() {
@Override
public void onComplete(@NonNull Task<ListResult> task) {
if (task.isComplete()){
task.addOnSuccessListener(new OnSuccessListener<ListResult>() { /////line 82 == 1st line where i am getting error
@Override
public void onSuccess(ListResult listResult) {
for (StorageReference item : listResult.getItems()) {
RingtoneModel ringtoneModel = new RingtoneModel();
ringtoneModel.setUri(item.getDownloadUrl().getResult()); /////line 88 == 2nd line where i am getting error here
item.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() {
@Override
public void onSuccess(StorageMetadata storageMetadata) {
ringtoneModel.setSongName(storageMetadata.getName());
Toast.makeText(MainActivity.this, "ring name saved", …Run Code Online (Sandbox Code Playgroud) 考虑 aProduct和 a quantity,它可以按给定的 增加和减少amount。数量绝不能变成负值,如果发生这种情况,必须禁止操作并向用户发出警告。
public class Product{
private int quantity;
public Product() {
quantity = 10;
}
public void decreaseQuantity(int amount) {
int decreasedQuantity = quantity - amount;
if(decreasedQuantity < 0 )
throw new RuntimeException(String.format("Decrease quantity (%s) exceeds avaiable quantity (%s)",
amount, quantity));
quantity = decreasedQuantity;
}
}
Run Code Online (Sandbox Code Playgroud)
例如,如果产品的数量为 10,而我尝试删除 20,则会抛出 RuntimeException。SonarCloud 建议用自定义异常替换 RuntimeException,但我想知道是否有适合这种情况的标准异常(Effective Java: Favor The Use of Standard Exceptions)。
最合适的例外似乎是IllegalStateException. 来自javadoc
表示某个方法在非法或不适当的时间被调用。换句话说,Java 环境或 Java 应用程序未处于适合所请求操作的状态。
以及来自《Effective Java》
IllegalStateException:如果调用方法时对象的状态对于该操作无效,则使用此异常。可能您有一个文件句柄,并且您在打开它之前调用了 …
我最近在设置一个包含3个片段的viewpager时遇到了一个问题.当应用程序运行时,它崩溃了
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first
Run Code Online (Sandbox Code Playgroud)
以下是用于创建要传递给pageAdapter的片段列表列表的代码.
private Vector<Fragment> getFragments() {
Vector<Fragment> list = new Vector<Fragment>();
list.add(new Fragment1());
list.add(new Fragment2());
list.add(new Fragment3());
return list;
Run Code Online (Sandbox Code Playgroud)
除了使用不同布局创建的片段之外,每个片段基本相同.这是我对其中一个片段的原始代码.公共类Fragment1扩展Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = getActivity().getLayoutInflater().inflate(R.layout.fragment1, container);
return v;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我像这样运行它时,它一直与IllegalStateException崩溃.我发现问题来自于正在创建的片段.经过一些谷歌搜索后,我尝试将片段的代码更改为此.
公共类Fragment1扩展Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = getActivity().getLayoutInflater().inflate(R.layout.fragment1, container, false);
return v;
}
} …Run Code Online (Sandbox Code Playgroud) java android illegalstateexception android-fragments layout-inflater
我在运行时遇到了非法状态异常.Not connected.call connect() and wait for onConnected() to be called.Below我发布了与之相关的代码.然后我指出了该编码中出现错误的确切位置.
堆栈跟踪:
E/AndroidRuntime(1305): FATAL EXCEPTION: main
E/AndroidRuntime(1305): Process: com.steph.example, PID: 1305
E/AndroidRuntime(1305): java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
E/AndroidRuntime(1305): at com.google.android.gms.internal.hb.cn(Unknown Source)
E/AndroidRuntime(1305): at com.google.android.gms.internal.jg.b(Unknown Source)
E/AndroidRuntime(1305): at com.google.android.gms.internal.jg$c.cn(Unknown Source)
E/AndroidRuntime(1305): at com.google.android.gms.internal.jf.getLastLocation(Unknown Source)
E/AndroidRuntime(1305): at com.google.android.gms.internal.jg.getLastLocation(Unknown Source)
E/AndroidRuntime(1305): at com.google.android.gms.location.LocationClient.getLastLocation(Unknown Source)
E/AndroidRuntime(1305): at com.steph.example.Main.getNearMeLocation(Main.java:264)
E/AndroidRuntime(1305): at com.steph.example.Main.onOptionsItemSelected(Main.java:183)
E/AndroidRuntime(1305): at android.app.Activity.onMenuItemSelected(Activity.java:2600)
E/AndroidRuntime(1305): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1012)
E/AndroidRuntime(1305): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
Run Code Online (Sandbox Code Playgroud)
Main.java:
public class Main extends Activity …Run Code Online (Sandbox Code Playgroud) 我创建了一个新项目并通过firebase的android studio工具添加了firebase。按照指示做了一切,但我在应用程序午餐期间收到此错误。
Process: com.chitchat, PID: 20084
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chitchat/com.chitchat.MainActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.chitchat. Make sure to call FirebaseApp.initializeApp(Context) first.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2951)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.chitchat. Make sure to call FirebaseApp.initializeApp(Context) first.
at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.0.1:219)
at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source:1)
at com.chitchat.MainActivity.onCreate(MainActivity.java:22)
at android.app.Activity.performCreate(Activity.java:7144) …Run Code Online (Sandbox Code Playgroud)