Reputation: 941
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
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
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
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