Sneha Bansal
Sneha Bansal

Reputation: 941

findviewbyid is giving null

I am having an activity and a layout for it .I have included a view in this layout which is common in all activities for showing error message.This common view is working fine in all of the activities but in one activity findviewby id is giving null for this view.Have tried a lot but not able to track where the problem is.Please see the code if anyone can suggest me something.Here is the code

Activity:

public class VerificationCodeActivity extends Activity {

    TextView resend_code,other_numbers;
    EditText vc_code1,vc_code2,vc_code3,vc_code4;
    Button verify_code;
    RelativeLayout error_layout;
    TextView error_textview;
    Button close_error_button;
    Context ctx =this;
    String confirmCode;
    Bundle bundle;
    String usernumber,countrycode,tempid;
    ArrayList<String>other_numebr_list;
    String accessType;


        @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    setContentView(R.layout.verification_code_layout);
    init();
    super.onCreate(savedInstanceState);

}
    void init()
    {
        resend_code = (TextView)findViewById(R.id.vc_resend_button);
        resend_code.setPaintFlags(resend_code.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
        error_textview = (TextView)findViewById(R.id.error_text);

        //here is the layout
        error_layout=(RelativeLayout)findViewById(R.id.error_layout);
        close_error_button= (Button)findViewById(R.id.close_button);
        }
    }
    void showErrorMessage(Boolean showm,String message )
    {

        if(showm)
        {
            error_textview.setText(message);
            CommonUtility.expand(error_layout);
        }
        else{
            CommonUtility.collapse(error_layout);
        }
    }

class VerifyCode extends AsyncTask {

String response;
Boolean askpin,iserror = false;
String verifiedBy = "2";

@Override
protected void onPostExecute(Void result) {
    // TODO Auto-generated method stub
    if(iserror)
    {
        showErrorMessage(true, response);
    }
    else if(askpin)
    {
        Intent startcreatpin = new Intent(ctx, CreatePasswordActivity.class);
        startcreatpin.putExtra(VariableClass.Vari.VERIFI_CODE,confirmCode);
        startcreatpin.putExtra(VariableClass.Vari.USERID,bundle.getString(VariableClass.Vari.COUNTRYCODE)+bundle.getString(VariableClass.Vari.USERID));
        ctx.startActivity(startcreatpin);
    }
    super.onPostExecute(result);
}

@Override
protected void onPreExecute() {
    // TODO Auto-generated method stub
    bundle = getIntent().getExtras();
    super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params) {
    // TODO Auto-generated method stub
    JSONObject parent,child;

    response = Apis.getApisInstance(ctx).verifyCode(bundle.getString(VariableClass.Vari.USERID), bundle.getString(VariableClass.Vari.COUNTRYCODE), Prefs.getResellerID(ctx), confirmCode, "2");

    if(!response.equalsIgnoreCase(""))
    {
        try {
            parent=new JSONObject(response);
            //if response of failed show message
            if(parent.getString(VariableClass.ResponseVariables.RESPONSE).equals(Apis.ErrorResponse))
            { 
                iserror = true;
                child= parent.getJSONObject(VariableClass.ResponseVariables.RESPONSEMESSAGE);
                response= child.getString(VariableClass.ResponseVariables.ERRORMESSAGE);
            }
            //if response of success send to create pin
            if(parent.getString(VariableClass.ResponseVariables.RESPONSE).equals(Apis.SuccessResponse))
            { 
                //hit verifiedsignup

                if(!tempid.equals(""))
                {
                    response = Apis.getApisInstance(ctx).verifiedsignup(verifiedBy, Prefs.getResellerID(ctx), bundle.getString(VariableClass.Vari.TEMP_ID),Prefs.getUserTariff(ctx));
                    if(!response.equals("")){
                        askpin= true;

                    }
                    else
                    {
                        iserror = true;
                        response= getResources().getString(R.string.server_error);
                    }
                }
            }

        } catch (JSONException e) {
            iserror=true;
            response=getResources().getString(R.string.parse_error);
            e.printStackTrace();
        }
    }
    else{
        iserror=true;
        response=getResources().getString(R.string.server_error);
    }

    return null;
}

} }

Layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical"
    android:padding="@dimen/padding_all" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/vc_text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/margin_top"
            android:padding="1dp"
            android:text="@string/vc_message"
            android:textColor="@android:color/white" />

        <include
            android:id="@+id/vc__em_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/margin_top"
            layout="@layout/error_message_layout"
            android:visibility="gone" />

        <LinearLayout
            android:id="@+id/vc_code_layout"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/edit_box_height"
            android:layout_marginTop="@dimen/margin_top"
            android:background="@drawable/curve_corner_shape_layout" >

            <EditText
                android:id="@+id/vc_code1"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@drawable/curve_corner_shape_edittext"
                android:gravity="center"
                android:hint="X"
                android:inputType="numberDecimal"
                android:maxLength="1"
                android:textColor="@android:color/white"
                android:textSize="@dimen/edit_text_size" />

            <LinearLayout
                android:layout_width="@dimen/partition_line_width"
                android:layout_height="fill_parent"
                android:background="@android:color/white" >
            </LinearLayout>

            <EditText
                android:id="@+id/vc_code2"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@drawable/curve_corner_shape_edittext"
                android:gravity="center"
                android:hint="X"
                android:inputType="numberDecimal"
                android:maxLength="1"
                android:textColor="@android:color/white"
                android:textSize="@dimen/edit_text_size" />

            <LinearLayout
                android:layout_width="@dimen/partition_line_width"
                android:layout_height="fill_parent"
                android:background="@android:color/white" >
            </LinearLayout>

            <EditText
                android:id="@+id/vc_code3"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@drawable/curve_corner_shape_edittext"
                android:gravity="center"
                android:hint="X"
                android:inputType="numberDecimal"
                android:maxLength="1"
                android:textColor="@android:color/white"
                android:textSize="@dimen/edit_text_size" />

            <LinearLayout
                android:layout_width="@dimen/partition_line_width"
                android:layout_height="fill_parent"
                android:background="@android:color/white" >
            </LinearLayout>

            <EditText
                android:id="@+id/vc_code4"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@drawable/curve_corner_shape_edittext"
                android:gravity="center"
                android:hint="X"
                android:inputType="numberDecimal"
                android:maxLength="1"
                android:textColor="@android:color/white"
                android:textSize="@dimen/edit_text_size" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/options"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/vc_othernumber_option"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/margin_top"
                android:layout_weight=".5"
                android:gravity="left"
                android:padding="1dp"
                android:text="@string/other_number"
                android:textColor="@android:color/white"
                android:visibility="gone" />

            <TextView
                android:id="@+id/vc_resend_button"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/margin_top"
                android:layout_weight=".5"
                android:gravity="right"
                android:padding="1dp"
                android:text="@string/resend"
                android:textColor="@android:color/white" />
        </LinearLayout>

        <Button
            android:id="@+id/vc_verifycode_button"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/button_height"
            android:layout_below="@id/options"
            android:layout_marginTop="@dimen/margin_top"
            android:background="@drawable/button_selector"
            android:text="@string/verify_text"
            android:textColor="@android:color/white"
            android:textSize="@dimen/button_text_size" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/margin_top"
            android:background="@drawable/logo_s" />
    </LinearLayout>

</RelativeLayout>

Layout Included:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/error_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/curve_corner_shape_errormsg"
    android:gravity="center_vertical"
    android:paddingBottom="@dimen/padding_bottom_em"
    android:paddingLeft="@dimen/padding_left_em"
    android:paddingRight="@dimen/padding_right_em"
    android:paddingTop="@dimen/padding_top_em" >

    <TextView
        android:id="@+id/error_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:gravity="left|center_vertical"
        android:paddingRight="@dimen/right_padding_em"
        android:text="Invalid userName"
        android:textColor="@android:color/white"
        android:textSize="@dimen/textsize_em" />

    <Button

        android:id="@+id/close_button"
        android:layout_width="@dimen/close_button_width"
        android:layout_height="@dimen/close_button_height"
        android:layout_marginTop="@dimen/close_button_margin_top"
        android:layout_alignParentRight="true"
        android:background="@drawable/close" />

</RelativeLayout>

Method //priting true public static void expand(final View v) {

Boolean b=false;
if(v==null)
{
    b=true;
}
Log.e("check if view is null",""+b);
v.measure(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
final int targtetHeight = v.getMeasuredHeight();

v.getLayoutParams().height = 0;
v.setVisibility(View.VISIBLE);
Animation a = new Animation()
{
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        v.getLayoutParams().height = interpolatedTime == 1
                ? LayoutParams.WRAP_CONTENT
                        : (int)(targtetHeight * interpolatedTime);
        v.requestLayout();
    }

    @Override
    public boolean willChangeBounds() {
        return true;
    }
};

// 1dp/ms
a.setDuration((int)(targtetHeight / v.getContext().getResources().getDisplayMetrics().density));
v.startAnimation(a);

}

Log:

10-07 17:44:04.430: E/AndroidRuntime(22640): java.lang.NullPointerException
10-07 17:44:04.430: E/AndroidRuntime(22640):    at commonUtilities.CommonUtility.expand(CommonUtility.java:86)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at com.phone91new.VerificationCodeActivity.showErrorMessage(VerificationCodeActivity.java:244)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at com.phone91new.VerificationCodeActivity$VerifyCode.onPostExecute(VerificationCodeActivity.java:264)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at com.phone91new.VerificationCodeActivity$VerifyCode.onPostExecute(VerificationCodeActivity.java:1)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at android.os.AsyncTask.finish(AsyncTask.java:631)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at android.os.Looper.loop(Looper.java:155)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at android.app.ActivityThread.main(ActivityThread.java:5520)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at java.lang.reflect.Method.invokeNative(Native Method)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at java.lang.reflect.Method.invoke(Method.java:511)
10-07 17:44:04.430: E/AndroidRuntime(22640):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)

Upvotes: 0

Views: 126

Answers (3)

Santosh Pandey
Santosh Pandey

Reputation: 190

First write super constructor in onCreate method as mentioned below in your activity class

super.onCreate(arg0); 
setContentView(R.layout.verification_code_layout);
init();

Hope so it'll help, And in xml

 <LinearLayout
                android:id="@+id/vc__em_layout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/margin_top"
                android:visibility="gone" >

                <include layout="@layout/error_message_layout" />
  </LinearLayout>

Upvotes: 3

laalto
laalto

Reputation: 152887

When using an <include> tag to include a layout, any attributes you specify in the include element override those of the included layout's root element.

In your case,

<include 
    android:id="@+id/vc__em_layout"

overrides the id in

<RelativeLayout 
    android:id="@+id/error_layout"

and the view cannot be found with R.id.error_layout.

Upvotes: 1

DJhon
DJhon

Reputation: 1518

In java super is used to call parent class constructor , so first you need to call Activity class constructor by

     super.onCreate(Bundle_object);

and another thing is that onCreate() is initialize life cycle component so you need to use

  super and this

both keyword as first line of constructor

Upvotes: -1

Related Questions