相关疑难解决方法(0)

如何修复getActionBar方法可能会产生java.lang.NullPointerException

我正在使用工具栏作为活动中的操作栏.我正在尝试将该方法添加getActionBar().setDisplayHomeAsUpEnabled(true);到Activity.java文件中以用于较旧设备的向上导航.

该方法在Android Studio中生成以下错误消息:

方法调用可能会产生java.lang.NullPointerException

工具栏上的向上导航在较新的设备上运行良好...现在我正在试图弄清楚如何确保它适用于旧设备.请指教.

来自build.gradle:

dependencies {
   compile "com.android.support:appcompat-v7:22.1.0"
}
Run Code Online (Sandbox Code Playgroud)

来自AndroidManifest.xml:

android:theme="@style/Theme.AppCompat.NoActionBar.FullScreen" 
Run Code Online (Sandbox Code Playgroud)

来自styles.xml

<style name="Theme.AppCompat.NoActionBar.FullScreen" parent="AppTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)

来自Activity.java

public class CardViewActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.cardviewinput);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    if (toolbar != null) {
        // Up navigation to the parent activity for 4.0 and earlier
        getActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationIcon(R.drawable.ic_action_previous_item);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

android toolbar android-actionbar

73
推荐指数
3
解决办法
6万
查看次数

在AndroidStudio 3.0.1中,DialogFragment getActivity()"可能为空"lint警告

我能找到的最接近的问题是Android Studio 3.0 lint警告,用于引用活动,但它没有帮助.

使用AndroidStudio 3.0.1,我有一个DialogFragment常用的东西:

    @Override
    @NonNull
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        ...
Run Code Online (Sandbox Code Playgroud)

我有一条皮带警告呻吟着我Argument 'getActivity()' might be null.

我理解为什么 getActivity()可能为null,我理解lint检查如何知道这一点(来自@Nullable注释).

我的问题是:这一切都非常好,getActivity()可能是空的,但实际上我应该如何优雅和整洁地处理这个问题呢?onCreateDialog 必须返回一个Dialog(因为超类' @Nullable注释)所以我必须有Activity上下文来创建它.

我可以假设,onCreateDialog如果DialogFragment没有附加到活动,将永远不会被调用,但仍然 - 我如何解决不整洁的lint警告?

java android lint

28
推荐指数
2
解决办法
4545
查看次数

标签 统计

android ×2

android-actionbar ×1

java ×1

lint ×1

toolbar ×1