小编nha*_*man的帖子

不幸的是MyApp已经停止了.我怎么解决这个问题?

我正在开发一个应用程序,每次运行它时,我都收到消息:

不幸的是,MyApp已经停止了.

我该怎么做才能解决这个问题?


关于这个问题 - 显然受到什么是堆栈跟踪的启发,以及如何使用它来调试我的应用程序错误?,有很多问题表明他们的应用程序崩溃了,没有任何进一步的细节.这个问题旨在指导新手Android程序员如何尝试自己解决问题,或者提出正确的问题.

java crash debugging android kotlin

759
推荐指数
18
解决办法
41万
查看次数

IllegalStateException:使用ViewPager在onSaveInstanceState之后无法执行此操作

我从我的应用程序中获取用户报告,提供以下异常:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1109)
at android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:399)
at android.app.Activity.onBackPressed(Activity.java:2066)
at android.app.Activity.onKeyUp(Activity.java:2044)
at android.view.KeyEvent.dispatch(KeyEvent.java:2529)
at android.app.Activity.dispatchKeyEvent(Activity.java:2274)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1803)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1855)
at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1277)
at android.app.Activity.dispatchKeyEvent(Activity.java:2269)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1803)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at android.widget.TabHost.dispatchKeyEvent(TabHost.java:297)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1855)
at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1277)
at android.app.Activity.dispatchKeyEvent(Activity.java:2269)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1803)
at android.view.ViewRoot.deliverKeyEventPostIme(ViewRoot.java:2880)
at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2853)
at android.view.ViewRoot.handleMessage(ViewRoot.java:2028)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4028)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) …
Run Code Online (Sandbox Code Playgroud)

android illegalstateexception android-fragments android-viewpager fragmenttransaction

472
推荐指数
12
解决办法
30万
查看次数

片段MyFragment未附加到Activity

我创建了一个代表我的问题的小测试应用程序.我正在使用ActionBarSherlock来实现带有(Sherlock)Fragments的选项卡.

我的代码: TestActivity.java

public class TestActivity extends SherlockFragmentActivity {
    private ActionBar actionBar;

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

    private void setupTabs(Bundle savedInstanceState) {
        actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        addTab1();
        addTab2();
    }

    private void addTab1() {
        Tab tab1 = actionBar.newTab();
        tab1.setTag("1");
        String tabText = "1";
        tab1.setText(tabText);
        tab1.setTabListener(new TabListener<MyFragment>(TestActivity.this, "1", MyFragment.class));

        actionBar.addTab(tab1);
    }

    private void addTab2() {
        Tab tab1 = actionBar.newTab();
        tab1.setTag("2");
        String tabText = "2";
        tab1.setText(tabText);
        tab1.setTabListener(new TabListener<MyFragment>(TestActivity.this, "2", MyFragment.class));

        actionBar.addTab(tab1);
    }
}
Run Code Online (Sandbox Code Playgroud)

TabListener.java

public class TabListener<T extends SherlockFragment> …
Run Code Online (Sandbox Code Playgroud)

android android-fragments actionbarsherlock

384
推荐指数
7
解决办法
23万
查看次数

如何_really_以编程方式更改Android Lollipop中的主色和强调色?

首先,这个问题提出了一个非常相似的问题.但是,我的问题有一个微妙的区别.

我想知道的是,是否可以以编程colorPrimary方式将主题的属性更改为任意颜色?

例如,我们有:

<style name="AppTheme" parent="android:Theme.Material.Light">
    <item name="android:colorPrimary">#ff0000</item>
    <item name="android:colorAccent">#ff0000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在运行时,用户决定他想#ccffff用作主要颜色.当然,我无法为所有可能的颜色创建主题.

我不介意我是否必须做hacky的东西,比如依赖Android的私人内部,只要它使用公共SDK.

我的目标是最终拥有ActionBar 所有小工具喜欢CheckBox使用这种原色.

android android-5.0-lollipop

148
推荐指数
4
解决办法
9万
查看次数

使用布尔值?如果表达

如果我有一个可空的Boolean b,我可以在Java中进行以下比较:

Boolean b = ...;
if (b != null && b) {
   /* Do something */
} else {
   /* Do something else */
}
Run Code Online (Sandbox Code Playgroud)

在Kotlin中,我可以通过使用!!运算符来实现相同的目的:

val b: Boolean? = ...
if (b != null && b!!) {
   /* Do something */
} else {
   /* Do something else */
}
Run Code Online (Sandbox Code Playgroud)

然而,!!对我来说使用感觉有点粗略,绕过零安全系统.

有更优雅的方法吗?


编辑似乎我有点过分了.对于局部变量,如Banthar所示,它确实有效.但是,我的布尔b实际上是一个"具有支持字段的属性"(我实际上并没有达到速度,而是强加了它).这是结果:

在此输入图像描述

null kotlin

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

透明动作栏:自定义tabcolor

我想创建一个带有透明标签的ActionBar #3b000000.像这样的东西,但在ActionBar下面有标签:

在此输入图像描述

这是我在styles.xml中使用的代码:

<style name="Theme.MyTheme" parent="@style/Theme.Sherlock.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="actionBarStyle">@style/ActionBar</item>
</style>

<style name="ActionBar" parent="@style/Widget.Sherlock.Light.ActionBar">
    <item name="android:background">@color/actionbar</item>
    <item name="background">@color/actionbar</item>
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
    <item name="actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>

<style name="ActionBarTabStyle" parent="@style/Widget.Sherlock.ActionBar.TabView">
    <item name="background">@color/actionbar_tabs</item>
    <item name="android:background">@color/actionbar_tabs</item>
</style>
Run Code Online (Sandbox Code Playgroud)

会发生什么,ActionBar本身确实显示透明的背景颜色,但标签是完全透明的(没有颜色可见).

我怎么解决这个问题?

android actionbarsherlock

62
推荐指数
4
解决办法
7万
查看次数

Jodatime开始一天和一天结束

我想在一周的开头和当周的结束之间创建一个间隔.

我从以下答案中借鉴了以下代码:

private LocalDateTime calcNextSunday(LocalDateTime d) {
    if (d.getDayOfWeek() > DateTimeConstants.SUNDAY) {
        d = d.plusWeeks(1);
    }
    return d.withDayOfWeek(DateTimeConstants.SUNDAY);
}

private LocalDateTime calcPreviousMonday(LocalDateTime d) {
    if (d.getDayOfWeek() < DateTimeConstants.MONDAY) {
        d = d.minusWeeks(1);
    }
    return d.withDayOfWeek(DateTimeConstants.MONDAY);
}
Run Code Online (Sandbox Code Playgroud)

但现在我希望周一LocalDateTime是00:00:00,周日LocalDateTime是23:59:59.我该怎么做?

java android jodatime

46
推荐指数
3
解决办法
5万
查看次数

以编程方式设置android:layout_centerHorizo​​ntal

在xml中,您可以执行以下操作:

<TextView
    ...
    android:layout_centerHorizontal="true"
    ...
/>
Run Code Online (Sandbox Code Playgroud)

当我有实例时,我将如何以TextView编程方式执行此操作?

android centering android-layout android-relativelayout

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

更改抽屉图标背对背箭头

我正在使用新的DrawerLayout侧面导航.我正在使用这样的抽屉图标('汉堡包'):

@Override
protected void onStart() {
    super.onStart();

    mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_main_drawerlayout);
    mDrawerToggle = new ActionBarDrawerToggle(
            this, 
            mDrawerLayout, 
            R.drawable.ic_navigation_drawer, 
            R.string.app_name, 
            R.string.app_name);
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我Fragment向backstack 添加一个时,我想再次显示后退箭头,这样用户就可以导航回"home",然后才打开app抽屉.

如何将抽屉图标重置为后退图标?
我想要的箭头:

导航抽屉

android navigation-drawer

43
推荐指数
1
解决办法
4万
查看次数

为什么泛型类型属性可以为空?

我正在尝试lateinit使用泛型类型的非可空属性创建参数化类:

class Test<T> {

   private lateinit var t : T

   private lateinit var s : String

}
Run Code Online (Sandbox Code Playgroud)

后者是允许的,但前者不是.编译器返回以下错误:

Error:(7, 11) ''lateinit'' modifier is not allowed on nullable properties
Run Code Online (Sandbox Code Playgroud)

由于我没有申报T?,我很困惑为什么会这样.

kotlin

41
推荐指数
2
解决办法
5108
查看次数