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

1

6

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 ...

Latimer answered 10/2, 2017 at 7:22 Comment(13)
can you add more details question is not really clearBurrus
Thanks @santoshkumar If possible one try my both codes so that you can get an Idea what error I am gettigLatimer
You're getting this error because play is null. And that is probably because you didnt assign a value to the play variable properly. You should share that part of the code?Aero
Thanks @MehmetKologlu I have Given Entire Code I am getting Error at ` play.setBackground(getActivity().getResources().getDrawable(R.drawable.ic_equalizer0));` like that here play is not null If I play directly its working but not in tablayout........ Please see the Two Links for entire code Please Help After seeing itLatimer
No you have not given the entire code.Where is the part in which play is instantiated. Also, play is indeed null. at the point you call .setBackground on it. That's literally what that error means.Aero
Here If you go back after Mainactity My player is there github.com/Old-Geek/Radio/blob/master/app/src/main/java/org/… Like that Entire code for both example is there if you go back on folders at git Please check if possible and suggest meLatimer
I'm not going to go over and read hundreds of lines of code, I don't think anybody here will. It is your responsibility as the owner of the question to ask a Minimal, Complete, and Verifiable ExampleAero
Here Only You mentioned no code... But If I give Entire code then What is this.. sir... My problem Is that I a changing normal layout to tab-layout Means I am adding this Radio Example in a Tab-Layout But over there I am getting Errors... If possible can any 1 suggest me How to Use Normal Layout to Tablayout I my case....Latimer
Mentioning onCreate and OnCreateView for Fragment or Activity?Thermoelectrometer
Please show the code of ProfileFragment. According to the error message, the error occured at line 370 of ProfileFragment.Girandole
There isn't play.setBackground(getResources().getDrawable(R.drawable.volume0)) inside your project github.com/stayinxing/androidTabLayout/…Pluton
I have Given Two code Just I am Clubing them... There is no new code,,,, They both are working individually Fine But when I add my radio In Fragment I am getting error ... But normal working fine... I have Given Two codes.... Please check them...Latimer
@MLN I understood your problem. Just post the code for the Fragment in which you transferred the MainActivity.java code?Thermoelectrometer
M
1

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

Mulligan answered 20/2, 2017 at 7:39 Comment(3)
Thanks @Hitesh Sahu sir... Actually Its working In normal Layout But not in Fragment.... Every thing I have Made same like nomal layout same Id etc in fragment.... I will try with this and tell viewRoot.findViewByIdLatimer
I have Given Two code Just I am Clubing them... There is no new code,,,, They both are working individually Fine But when I add my radio In Fragment I am getting error ... But normal working fine... I have Given Two codes.... Please check them...Latimer
Thanks A Lot.... I need that one Only... Tanks for your Help sir This is a good tutorial for all users...Latimer

© 2022 - 2024 — McMap. All rights reserved.