2017-02-24 7 views
-4

私はカスタムカレンダーを表示するために使用していますが、これを使用した後に、クラス例外を拡張する際にエラーが発生しています。Android InflateExceptionバイナリXMLファイルの行

:活動にカレンダーを設定し、イベントを示すため

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_custom_calendar" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
//getting mainactivity fetch  tools:context="androidcustomcalendar.inducesmile.com.mycutomcalendar.MainActivity"> 
//gettting error on this Line : 
//Inflating Calendar class 
<androidcustomcalendar.inducesmile.com.mycutomcalendar.CalendarCustomView 
    android:id="@+id/custom_calendar" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</androidcustomcalendar.inducesmile.com.mycutomcalendar.CalendarCustomView> 

CalendarCustomViewクラスのカレンダービューを表示するために使用してカレンダー

public class MainActivity extends AppCompatActivity { 
private static final String TAG = MainActivity.class.getSimpleName(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
//Getting error here for inflating  
setContentView(R.layout.activity_main); 
//Inflating this class from another 
    CalendarCustomView mView = (CalendarCustomView)findViewById(R.id.custom_calendar); 
} 

主な活動のレイアウトを示すため

MainActivityクラス

//Class for showing calendar on the layout using linear layout 
public class CalendarCustomView extends LinearLayout{ 
private Button addEventButton; 
//Showing Max column 
private static final int MAX_CALENDAR_COLUMN = 42; 
private SimpleDateFormat formatter = new SimpleDateFormat("MMMM yyyy", Locale.ENGLISH); 
private Calendar cal = Calendar.getInstance(Locale.ENGLISH); 
private Context context; 
private GridAdapter mAdapter; 
public CalendarCustomView(Context context) { 
    super(context); 
}//context using CalendarCustom View 
public CalendarCustomView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.context = context; 
    //Initalizing Ui layout 
    initializeUILayout(); 
    //Set up calendar adapter 
    setUpCalendarAdapter(); 
    //setting previous button clicking event for going to back 
    setPreviousButtonClickEvent(); 
    //next button to move forward 
    setNextButtonClickEvent(); 
    //click on cell of calendar 
    setGridCellClickEvents(); 
    //Log.d(TAG, "I need to call this method"); 
} 
public CalendarCustomView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 
private void initializeUILayout(){ 
    //Inflating layout 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
    //using Calendar_layout here 
    View view = inflater.inflate(R.layout.calendar_layout, this); 
    previousButton = (ImageView)view.findViewById(R.id.previous_month); 
    nextButton = (ImageView)view.findViewById(R.id.next_month); 
    currentDate = (TextView)view.findViewById(R.id.display_current_date); 
    addEventButton = (Button)view.findViewById(R.id.add_calendar_event); 
    calendarGridView = (GridView)view.findViewById(R.id.calendar_grid); 
} 
//Setting previous button click event for moving back 
private void setPreviousButtonClickEvent(){ 
    previousButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      cal.add(Calendar.MONTH, -1); 
      //Setting Calendar Adapter for events and other stuff 
      setUpCalendarAdapter(); 
     } 
    }); 
} 
//Showing next button to move forward 
private void setNextButtonClickEvent(){ 
    nextButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //adding month in when click on next button 
      cal.add(Calendar.MONTH, 1); 
      //Setting up adapter to showing colors and events on calander 
      setUpCalendarAdapter(); 
     } 
    }); 
} 
//setting click events for grid cell 
private void setGridCellClickEvents(){ 
    calendarGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      //Getting onItemClick events 
      // Toast.makeText(context, "Clicked " + position, Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 
//setting calendar adapter for showing events and other stuff of calendar 
private void setUpCalendarAdapter(){ 
    List<Date> dayValueInCells = new ArrayList<Date>(); 
    //mQuery = new DatabaseQuery(context); 
    //  List<EventObjects> mEvents = mQuery.getAllFutureEvents(); 
    //Using list for adding events and showing on calendar 
    List<EventObjects> mEvents = new ArrayList<>(); 
    //adding first object in list 
    EventObjects eventObjects = new EventObjects(1, "message", mQuery.convertStringToDate("1-02-20017")); 
    //adding second object in list 
    EventObjects eventObjects1 = new EventObjects(1, "message", mQuery.convertStringToDate("5-02-20017")); 
    //adding third object in list 
    EventObjects eventObjects2 = new EventObjects(1, "message", mQuery.convertStringToDate("6-02-20017")); 
    //adding fourth object in list 
    EventObjects eventObjects3 = new EventObjects(1, "message", mQuery.convertStringToDate("15-02-20017")); 
    //Adding first object in the list 
    mEvents.add(eventObjects); 
     //Adding second object in the list 
    mEvents.add(eventObjects1); 
    //adding third object in the list 
    mEvents.add(eventObjects3); 
    // adding second object in the list 
    mEvents.add(eventObjects2); 
    //the above all objects are using to show some events on the calendar 
    Calendar mCal = (Calendar)cal.clone(); 
    mCal.set(Calendar.DAY_OF_MONTH, 1); 
    int firstDayOfTheMonth = mCal.get(Calendar.DAY_OF_WEEK) - 1; 
    mCal.add(Calendar.DAY_OF_MONTH, -firstDayOfTheMonth); 
    while(dayValueInCel ls.size() < MAX_CALENDAR_COLUMN){ 
     dayValueInCells.add(mCal.getTime()); 
     mCal.add(Calendar.DAY_OF_MONTH, 1); 
    } 
    //Log.d(TAG, "Number of date " + dayValueInCells.size()); 
    String sDate = formatter.format(cal.getTime()); 
    currentDate.setText(sDate); 
    mAdapter = new GridAdapter(context, dayValueInCells, cal, mEvents); 
    //setting gridadapter class for making calender view in grid 
    calendarGridView.setAdapter(mAdapter); 
} 
}          
+1

フルクラッシュlogcatにそれが適切なパッケージであることを –

+0

チェックを共有してくださいここのように 'androidcustomcalendar.inducesmile.com.mycutomcalendar.CalendarCustomView' – Piyush

+0

java.lang.RuntimeException:アクティビティComを開始できませんponentInfo {androidcustomcalendar.inducesmile.com.mycutomcalendar/androidcustomcalendar.inducesmile.com.mycutomcalendar.MainActivity}:android.view.InflateException:バイナリXMLファイル行#9:クラスを膨張させるエラー –

答えて

1

これはあなたの申告された行です:tools:context="androidcustomcalendar.inducesmile.com.mycutomcalendar.MainActivit y">

.MainActivityとして更新してください。

yより前のスペースは、間違っていないとエラーの原因となります。

+0

'tools'名前空間は実行時に実際に何もしません。 –

+0

うん!それは本当だ ! – Piyush

+0

すべてのレイアウトとアクティビティで同じテーマを使用していることを確認してください。 –

0

あなたのLinearLayoutこの

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:custom="http://schemas.android.com/apk/res-auto" 
android:id="@+id/activity_custom_calendar" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="androidcustomcalendar.inducesmile.com.mycutomcalendar.MainActiviy"> 

同様

xmlns:custom="http://schemas.android.com/apk/res-auto" 

にこの行を追加します。そして、あなたは適切なパッケージ名を使用している作る

+0

動作しておらず、その行にも関係ありません –

関連する問題