2017-08-27 71 views
1

我在CourseInnerPage活动内部创建了一个构造函数,并在OnBindViewHolder方法内调用它,并在输入时传递了getItemCount。但我得到一个异常,并在我的manifest.xml文件中说,这个活动没有默认的构造函数。我该怎么办?有关此活动的清单错误没有默认构造函数

适配器类

public class AdapterVRList extends RecyclerView.Adapter<AdapterVRList.CourseViewHolder> { 

private Context context; 
private List<DObjectVrList> DObjectVrListList; 

public AdapterVRList(Context context, List<DObjectVrList> DObjectVrListList){ 
    this.context = context; 
    this.DObjectVrListList = DObjectVrListList; 
} 
public AdapterVRList(Context context){ 

} 


@Override 
public CourseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View view = LayoutInflater.from(context).inflate(R.layout.card_vr,parent,false); 
    return new CourseViewHolder(view); 
} 

@Override 
public void onBindViewHolder(CourseViewHolder holder, int position) { 

    DObjectVrList DObjectVrList = DObjectVrListList.get(position); 
    holder.CourseText.setText(DObjectVrList.getTitleCourse()); 

    holder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      CourseInnerPage course = new CourseInnerPage(getItemCount()); 
      Intent intent = new Intent(context,CourseInnerPage.class); 
      context.startActivity(intent); 
     } 
    }); 
} 

@Override 
public int getItemCount() { 
    return 8; 
} 

public class CourseViewHolder extends RecyclerView.ViewHolder{ 

    private TextView CourseText; 

    public CourseViewHolder(View itemView) { 
     super(itemView); 
     CourseText = (TextView) itemView.findViewById(R.id.course_text); 
    } 
} 
} 

CourseInnerPage活性:

public class CourseInnerPage extends AppCompatActivity { 

private static final String TAG = "CourseInnerPage"; 
private FloatingActionButton ShowButton; 
private NestedScrollView CourseShow; 
private int id; 

public CourseInnerPage(int Id_Card){ 
    id = Id_Card; 
} 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_course_inner_page); 

    CourseShow = (NestedScrollView) findViewById(R.id.course_descript); 
    CourseShow.setVisibility(View.INVISIBLE); 
    CoordinatorLayout layout = (CoordinatorLayout) findViewById(R.id.inner_course); 
    for(int i=1;i<=8;i++){ 
     switch (id) { 
      case 1: 
       layout.setBackground(getResources().getDrawable(R.drawable.one_bg, null)); 
       ShowButton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         TeacherNet teacherNet = new TeacherNet(CourseInnerPage.this); 
         JSONObject requestObject = new JSONObject(); 
         try { 
          requestObject.put("vrcode","1"); 
          teacherNet.SelectContent(requestObject, new TeacherNet.JSONsendListener() { 
           @Override 
           public void JSONsent(String success) { 
            if (success=="OK"){ 
             Log.i(TAG, "JSONsent: Everything is Ok"); 
            } 
           } 
          }); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }); 
       break; 
      case 2: 
       layout.setBackground(getResources().getDrawable(R.drawable.two_bg, null)); 
       break; 
      case 3: 
       layout.setBackground(getResources().getDrawable(R.drawable.three_bg,null)); 
       break; 
      case 4: 
       layout.setBackground(getResources().getDrawable(R.drawable.four_bg,null)); 
       break; 
      case 5: 
       layout.setBackground(getResources().getDrawable(R.drawable.five_bg,null)); 
       break; 
      case 6: 
       layout.setBackground(getResources().getDrawable(R.drawable.six_bg,null)); 
       break; 
      case 7: 
       layout.setBackground(getResources().getDrawable(R.drawable.seven_bg,null)); 
       break; 
      case 8: 
       layout.setBackground(getResources().getDrawable(R.drawable.eight_bg,null)); 
       break; 
     } 
    } 


} 
} 

AndroidManifest文件

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="realup.ir.teacher"> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="Teacher" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".Activity.Login"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".Activity.Main" 
     android:parentActivityName=".Activity.Student"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVTY" 
      android:value=".Student" /> 
    </activity> 
    <activity android:name=".Activity.Student" /> 
    <activity android:name=".Activity.CourseInnerPage"/> 
</application> 

</manifest> 

抗辩n:java.lang.InstantiationException:java.lang.Class没有零参数构造函数

回答

2

不要在构造函数中保留构造函数。请使用onCreate方法来初始化变量。

如果你想从你的活动onCreate方法提供一个ID为活动,开始活动之前使用intent.putExtra("tag", id)和获得的价值:

int id = getIntent().getIntExtra("tag", 0); 
+0

再次感谢你;) –

0

的问题是,你的活动有没有零参数构造函数。系统需要它自动创建活动实例。但是,作为@Nabin的一般方法,答案是完全正确的。

相关问题