2017-07-06 16 views
0

FragmentMainActivityで開き、デバッグバージョンではなく署名付きapkでのみ開きます。ソースが不明の署名付きapkでnullpointerexceptionを取得する

致命的な例外:メイン

プロセス:com.curieo.podcast、PID:15376 テーマ:テーマ:{} java.lang.NullPointerExceptionが仮想メソッドを呼び出す試み「INTれるjava.lang。 (不明な情報源) com.curieo.podcast.ui.ccf(不明な情報源) com.curieo.podcast.ui.cca(不明な情報源) com.curieo.podcast.eaaでのヌルオブジェクト参照のInteger.intValue (不明な情報源) com.curieo.podcast.eaonPostExecute(不明な情報源) android.os.AsyncTask.finish(AsyncTask.java:651) android.os.AsyncTask.-wrap1(AsyncTask.java) at android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:668) at android.os.Handler.dispatchMessage(Handler.java:102) とandroid.os.Looper.loop(Looper.java:148) とandroid.app.ActivityThread.main(ActivityThread.java:5461) でのjavaです。 lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :616)

は、これは(firebaseログイン、プッシュ通知のような)一部のサービスは、SHA証明書のフィンガープリントを生成する必要が

public class DiscoverFragment extends BaseFragment implements DownloadFeedUrlsFromServerTask.DownloadFeedUrlsFromServerTaskInterface, LoaderManager.LoaderCallbacks<Cursor> { 

    ExpandableHeightGridView featuredListView; 

    TwoWayGridView popularListView, trendingListView; 
    private ServerFeed[] feeds; 
    ArrayList<ServerFeed> popularList, featuredList, trendingList; 
    AVLoadingIndicatorView progress; 

    public DiscoverFragment() { 
     // Required empty public constructor 
    } 

    private BroadcastReceiver podcastAddedReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      progress.setVisibility(View.GONE); 
      progress.smoothToHide(); 
      popularListView.setAlpha(1); 
      featuredListView.setAlpha(1); 
      trendingListView.setAlpha(1); 
      popularListView.setClickable(true); 
      featuredListView.setClickable(true); 
      trendingListView.setClickable(true); 
      switch (intent.getAction()) { 
       case BroadcastHelper.INTENT_PODCAST_PROCESSED: 
        if (intent.getBooleanExtra(BroadcastHelper.EXTRA_SUCCESS, false)) { 
         Channel channel = Parcels.unwrap(intent.getParcelableExtra(BroadcastHelper.EXTRA_CHANNEL)); 
         ChannelProfileActivity.openChannelProfile((BaseActivity) getActivity(), 
           channel, null, false); 
        } 
        break; 
      } 
     } 
    }; 

    @Override 
    protected int getLayoutResourceId() { 
     return R.layout.fragment_discover; 
    } 

    @Override 
    protected int getFragmentTitleResourceId() { 
     return R.string.title_fragment_discover; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     super.onCreateView(inflater, container, savedInstanceState); 
     View root = inflater.inflate(R.layout.fragment_discover, container, false); 

     initUI(root); 
     return root; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     BroadcastHelper.registerReceiver(getActivity(), podcastAddedReceiver, 
       BroadcastHelper.INTENT_PODCAST_PROCESSED, BroadcastHelper.INTENT_OPML_PROCESS_FINISH); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     BroadcastHelper.unregisterReceiver(getActivity(), podcastAddedReceiver); 
    } 

    @Override 
    public void processRequestResponse(String response) { 
     if (response != null && !response.isEmpty()) { 
      Gson gson = new Gson(); 
      this.feeds = gson.fromJson(response, ServerFeed[].class); 
      this.populateItems(); 
     } 
    } 

    private void populateItems() { 

     for (int i = 0; i < this.feeds.length; i++) { 
      if (this.feeds[i].getWeight() < 100) { 
       Log.e("", "populateItems: " + this.feeds[i].getWeight()); 
       popularList.add(this.feeds[i]); 

      } else if (this.feeds[i].getWeight() > 100 && this.feeds[i].getWeight() < 200) { 
       Log.e("", "populateItems " + this.feeds[i].getWeight()); 

       featuredList.add(this.feeds[i]); 

      } else if (this.feeds[i].getWeight() > 200) { 
       Log.e("", "populateItems " + this.feeds[i].getWeight()); 

       trendingList.add(this.feeds[i]); 
      } 
     } 

     CustomFeaturedDiscoverAdapter adapter = new CustomFeaturedDiscoverAdapter(getActivity(), R.layout.featured_discover_list_item, popularList); 
     CustomFeaturedDiscoverAdapter adapter1 = new CustomFeaturedDiscoverAdapter(getActivity(), R.layout.featured_discover_list_item, featuredList); 
     CustomFeaturedDiscoverAdapter adapter2 = new CustomFeaturedDiscoverAdapter(getActivity(), R.layout.featured_discover_list_item, trendingList); 
     featuredListView.setAdapter(adapter1); 
     popularListView.setAdapter(adapter); 
     trendingListView.setAdapter(adapter2); 
     popularListView.setOnItemClickListener((parent, view, position, id) -> { 
      podcastOnCLick(popularList, position); 

     }); 

     featuredListView.setOnItemClickListener((adapterView, view, i, l) -> { 
      podcastOnCLick(featuredList, i); 
     }); 

     trendingListView.setOnItemClickListener((parent, view, position, id) -> { 
      podcastOnCLick(trendingList, position); 

     }); 
    } 

    private void podcastOnCLick(ArrayList<ServerFeed> featuredList, int i) { 

     PodcastSyncService.addPodcastFromUrl(getActivity(), featuredList.get(i).getFeed_link()); 
     progress.setVisibility(View.VISIBLE); 
     progress.smoothToShow(); 
     featuredListView.setAlpha((float) 0.40); 
     popularListView.setAlpha((float) 0.40); 
     trendingListView.setAlpha((float) 0.40); 
     Toast.makeText(getActivity(), "Please wait, while the podcast loads.", Toast.LENGTH_LONG).show(); 
     featuredListView.setClickable(false); 
     popularListView.setClickable(false); 
     trendingListView.setClickable(false); 
    } 

    private void initUI(View view) { 
     progress = (AVLoadingIndicatorView) view.findViewById(R.id.progress_bar_discover_screen); 
     popularListView = (TwoWayGridView) view.findViewById(R.id.listview_discover); 
     featuredListView = (ExpandableHeightGridView) view.findViewById(R.id.listview_featured); 
     trendingListView = (TwoWayGridView) view.findViewById(R.id.listview_trending); 
     popularList = new ArrayList<>(); 
     featuredList = new ArrayList<>(); 
     trendingList = new ArrayList<>(); 

     if (this.feeds == null) { 
      DownloadFeedUrlsFromServerTask downloadFeedUrlsFromServerTask = new DownloadFeedUrlsFromServerTask(); 
      downloadFeedUrlsFromServerTask.downloadFeedUrlsFromServerTaskInterface = this; 
      downloadFeedUrlsFromServerTask.execute(); 
     } 
    } 

    public static DiscoverFragment newInstance(Bundle args) { 
     DiscoverFragment fragment = new DiscoverFragment(); 

     if (args != null) { 
      fragment.setArguments(args); 
     } 

     return fragment; 
    } 

    @Override 
    public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
     return null; 
    } 

    @Override 
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 

    } 

    @Override 
    public void onLoaderReset(Loader<Cursor> loader) { 

    } 
} 

答えて

0

エラーがスローされますフラグメントです。そのようにそのようなサービスあなたのアプリを識別するため、あなたは彼らのサービスを使用できるようになります。 デバッグとリリースのバリエーションはそれぞれ異なるフィンガープリントを生成します。そのためサービスの場合、デバッグモードのアプリケーションはリリースモードとは別のアプリですので、非同期タスクがデータを要求していて許可されていない場合はnullを返していますが、クラッシュが発生します。 いずれにしても、null値を処理する必要があります。if ... else、または少なくともtry catchのものです。 乾杯、

関連する問題