Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Changing a Normal Layout to Tab Layout error in Image buttons and other?

I followed this to create an Android Radio Stream

over there It's working fine So I am trying to add a tab-layout to this

So I followed this to add Tab layout

Over there I have Added But I got Lot of error so I have Changed some like

FROM

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main_activity);

TO this

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View viewRoot = inflater.inflate(R.layout.main_activity, container, false);

And added viewRoot.findViewById in some places in on-create but after On create What ever are there I have Given like getActivity().findViewById

Because I have Given return viewRoot; in onCreate it is not possible

Now I am getting errors at play.setBackground(getResources().getDrawable(R.drawable.volume0));

Like

    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setBackground(android.graphics.drawable.Drawable)' on a null object reference
at star.yx.tabview.ProfileFragment.updatePlayStatus(ProfileFragment.java:370)
at star.yx.tabview.ProfileFragment.setIFace(ProfileFragment.java:205)
at star.yx.tabview.ProfileFragment.onCreateView(ProfileFragment.java:158)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298)
at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1969)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:620)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1116)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642)
at android.view.View.measure(View.java:18596)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:464)
at android.view.View.measure(View.java:18596)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
at android.view.View.measure(View.java:18596)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:393)
at android.view.View.measure(View.java:18596)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:18596)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1435)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:721)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:612)
at android.view.View.measure(View.java:18596)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2897)
at android.view.View.measure(View.java:18596)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2248)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1306)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1548)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1191)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6642)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
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:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:

I have Added my code in ProfileFragment for Testing purpose....

Can anyone Suggest me How to use My activity In fragments like my example table layout Please suggest me on this kind

Update

All I am trying.

I am just Using my Radio Layout In a Tablet Layout So in one tab I can play the radio in other I can Use some other. But Here My radio service is not in fragment/Tab layout So I am getting A lot of errors Can anyone Suggest me How to add Tab-layout to my Radio Activity I followed my android tutorials but I tried and tired Please Help me How to Use those two examples in one ...

like image 291
Whats Going On Avatar asked Feb 10 '17 07:02

Whats Going On


People also ask

How to create tab layout in Android?

Tabs are created using newTab() method of TabLayout class. The title and icon of Tabs are set through setText(int) and setIcon(int) methods of TabListener interface respectively. Tabs of layout are attached over TabLayout using the method addTab(Tab) method.

How do you use TabLayoutMediator?

Establish the link by creating an instance of this class, make sure the ViewPager2 has an adapter and then call attach() on it. Instantiating a TabLayoutMediator will only create the mediator object, attach() will link the TabLayout and the ViewPager2 together.

What is a tab layout?

In Android TabLayout is a new element introduced in Design Support library. It provides horizontal layout to display tabs on the screen. We can display more screens in a single screen using tabs. We can quickly swipe between the tabs.


1 Answers

Cause

In onResume you are calling setIFace() method which internally triggers updatePlayStatus method.

If you look at updatePlayStatus method you will see there is an ImageView play which is assigned to view with ID icon_play

private void updatePlayStatus() {
    ImageView play = (ImageView) findViewById(R.id.icon_play);

    if ("stop".equals(etat_lecture) || "pause".equals(etat_lecture)) {
        play.setBackground(getDrawable(R.drawable.ic_equalizer0));
    } else {
        play.setBackground(getDrawable(R.drawable.ic_equalizer));
    }
}

If Android can't find any view with ID = icon_play then Android will automatically assign it null. Later you are calling play.setBackground, Since play variable is null in your case, you are getting Null Pointer exception.

Solution

  • First, check if you are using the correct layout in your fragment class ie. there must be some view with ID icon_play.
  • Secondly, try to clean and build the project. It can occur because of faulty generated R.java class
  • Most important , Use viewRoot.findViewById instead of getActivity().findViewById, getActivity might return null, or better use ButterKnife to avoid all those boilerplate

MainActivity code was complete mesh, I have broken it down into fragments

enter image description hereenter image description here

You can take a look at source code on my GitHub

https://github.com/hiteshsahu/Android-Radio

like image 124
Hitesh Sahu Avatar answered Oct 19 '22 13:10

Hitesh Sahu