android - AndroidImageSlider DefaultSliderView 的空指针异常在 Android Studio 中,Build 22.0.1

标签 android slider

这是我的堆栈跟踪:

08-16 10:23:40.006  19022-19022/com.world.innov.ebilling     E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.world.innov.ebilling, PID: 19022
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.world.innov.ebilling/com.world.innov.ebilling.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.putString(java.lang.String, java.lang.String)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5257)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.putString(java.lang.String, java.lang.String)' on a null object reference
    at com.world.innov.ebilling.MainActivity.onCreate(MainActivity.java:52)
    at android.app.Activity.performCreate(Activity.java:5990)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)          at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5257)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

这是我的 Activity :

import java.util.HashMap;
import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.BaseSliderView.OnSliderClickListener;
import com.daimajia.slider.library.SliderTypes.DefaultSliderView;


import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Button;


public class MainActivity extends Activity implements OnSliderClickListener {
public static final String MY_PREFS_NAME = "MyPrefsFile";
private SliderLayout mDemoSlider;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);


    mDemoSlider = (SliderLayout) findViewById(R.id.slider);

    HashMap<String, Integer> file_maps = new HashMap<String, Integer>();

    file_maps.put("A", R.drawable.invoicebyhand);
    file_maps.put("B", R.drawable.invoicebymobile);
    file_maps.put("C", R.drawable.analysis);

    for (String name : file_maps.keySet()) {
        DefaultSliderView defaultSliderView = new DefaultSliderView(this);
        // initialize a SliderLayout
        defaultSliderView
                .description(name)
                .image(file_maps.get(name))
                .setScaleType(BaseSliderView.ScaleType.Fit)
                .setOnSliderClickListener(this);

        //add your extra information
        defaultSliderView.getBundle()
                .putString("extra", name);

        mDemoSlider.addSlider(defaultSliderView);
    }
            mDemoSlider.setPresetTransformer(SliderLayout.Transformer.RotateUp);
    mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
    mDemoSlider.stopAutoCycle();


    SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
    String pin = prefs.getString("pin", "");

    if (pin.equals("")) {
        disableLetsGo();
        Intent i = new Intent(this, TOCActivity.class);
        startActivity(i);
    } else {
        disableSignUp();
    }

}

@Override
public void onSliderClick(BaseSliderView slider) {
    // TODO Auto-generated method stub

}
}

我的问题是“有人能明白为什么我在第 52 行遇到空指针异常吗?我猜是 defaultSliderView”?

line 52 is : defaultSliderView.getBundle()
                .putString("extra", name);

我正在使用 android studio 和 22.0.1 buildtoolversion。当我在 eclipse 上做这个项目时,我没有遇到这个问题。这是我第一次使用android studio。我成功地完全迁移了项目,并且遇到了运行时异常。我使用的是daimajia 的androidimageslider。

更新:defaultSliderView 返回空包(感谢@HariRam)。我应该如何继续或者有什么可以替换 bundle 吗?

更新2:我删除了第 52 行。它现在可以工作。

最佳答案

defaultSliderView.getBundle()

返回 null,因此您尝试将值放入 null 包中。因此,您的应用程序崩溃了。

defaultSliderView.getBundle() .putString("extra", name);

删除此行不会对您的应用产生任何不良影响,因此您应该将其删除。

关于android - AndroidImageSlider DefaultSliderView 的空指针异常在 Android Studio 中,Build 22.0.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038155/

相关文章:

javascript - 带有控件和自动滚动的 jquery slider

javascript - 增加和减少 jQuery slider ui 值一步

android - 如何在 android Activity 中绘制温度计?

android - AndroidX 迁移后应用程序崩溃(数据绑定(bind)错误)

java - 即时应用程序在发布中无法运行(即时应用程序启动因未知原因失败(getInstantAppPreLaunchInfo 失败))

android - 如何为每个 ListView 项设置不同的按下状态颜色?

Javascript 网格 slider

javascript - jquery slider 根本不工作

jquery - BxSlider 淡入和淡出

android - NPE 自定义 ListView 适配器