public class DashboardFragment extends Fragment {
private DashboardViewModel dashboardViewModel;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
dashboardViewModel =
ViewModelProviders.of(this).get(DashboardViewModel.class);
View v = inflater.inflate(R.layout.fragment_dashboard, container, false);
Button button = (Button) v.findViewById(R.id.createLogBTN);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), divelogcreate.class);
startActivity(intent);
}
});
return v;
}
Не могу найти способ исправить это. Он находится на студии android, и я пытаюсь добавить активируемую кнопку к фрагменту, и она вылетает каждый раз при нажатии кнопки. Любая помощь очень ценится!
Error Exception:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.divelogapp, PID: 10513
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.divelogapp/com.example.divelogapp.divelogcreate}: java.lang.InstantiationException: java.lang.Class<com.example.divelogapp.divelogcreate> has no zero argument constructor
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2843)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.InstantiationException: java.lang.Class<com.example.divelogapp.divelogcreate> has no zero argument constructor
at java.lang.Class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)
at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:41)
at android.app.Instrumentation.newActivity(Instrumentation.java:1215)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2831)
Это операция по созданию дивайла, после поиска я, кажется, не думаю, что в ней что-то не хватает. Но есть много код, и у меня нет острых глаз на ошибки, подобные этой
package com.example.divelogapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class divelogcreate extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "divelogStartOver2.db";
public static final String TABLE_NAME = "divelog_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "DIVE_NUM";
public static final String COL_3 = "DATE";
public static final String COL_4 = "LOCATION";
public static final String COL_5 = "SITE";
public static final String COL_6 = "TEMPERATURE";
public static final String COL_7 = "VISIBILITY";
public static final String COL_8 = "MAX_DEPTH";
public static final String COL_9 = "BOTTOM_TIME";
public static final String COL_10 = "SAFTEY_CONDUCT_TIME";
public static final String COL_11= "TOTAL_TIME";
public static final String COL_12= "WEIGHT";
public static final String COL_13 = "SUIT_TYPE";
public static final String COL_14 = "THICKNESS";
public static final String COL_15 = "AIR_TYPE";
public static final String COL_16 = "COMMENTS";
public static final String COL_17 = "SIG_FIRSTNAME";
public static final String COL_18 = "SIG_LASTNAME";
public static final String COL_19 = "DATE_SIGNED";
public static final String COL_20 = "SIGN_DIVE_NUM";
public static final String COL_21 = "COMPANY";
public divelogcreate(Context context) {
super(context, DATABASE_NAME, null, 1);
}
public divelogcreate(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
"DIVE_NUM TEXT, DATE TEXT, LOCATION TEXT, SITE TEXT, TEMPERATURE INTEGER, VISIBILITY TEXT," +
"MAX_DEPTH INTEGER, BOTTOM_TIME INTEGER, SAFTEY_CONDUCT_TIME INTEGER, TOTAL_TIME INTEGER," +
"WEIGHT INTEGER, SUIT_TYPE TEXT, THICKNESS INTEGER, AIR_TYPE TEXT, COMMENTS TEXT," +
"SIG_FIRSTNAME TEXT, SIG_LASTNAME TEXT, DATE_SIGNED TEXT, SIGN_DIVE_NUM TEXT, COMPANY TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
public boolean insertData(String dive_num, String date, String location, String site, String temperature,
String visibility, String max_depth, String bottom_time, String saftey,
String total_time, String weight, String suit_type, String thickness,
String air_type, String comments, String sign_first, String sign_last,
String date_sign, String sign_dive_num, String company){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2,dive_num);
contentValues.put(COL_3,date);
contentValues.put(COL_4,location);
contentValues.put(COL_5,site);
contentValues.put(COL_6,temperature);
contentValues.put(COL_7,visibility);
contentValues.put(COL_8,max_depth);
contentValues.put(COL_9,bottom_time);
contentValues.put(COL_10,saftey);
contentValues.put(COL_11,total_time);
contentValues.put(COL_12,weight);
contentValues.put(COL_13,suit_type);
contentValues.put(COL_14,thickness);
contentValues.put(COL_15,air_type);
contentValues.put(COL_16,comments);
contentValues.put(COL_17,sign_first);
contentValues.put(COL_18,sign_last);
contentValues.put(COL_19,date_sign);
contentValues.put(COL_20,sign_dive_num);
contentValues.put(COL_21,company);
long results = db.insert(TABLE_NAME,null,contentValues);
if (results == -1)
return false;
else
return true;
}
public Cursor getAllData(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
return res;
}
public boolean updateData(String id, String dive_num, String date, String location, String site, String temperature,
String visibility, String max_depth, String bottom_time, String saftey,
String total_time, String weight, String suit_type, String thickness,
String air_type, String comments, String sign_first, String sign_last,
String date_sign, String sign_dive_num, String company){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_1,id);
contentValues.put(COL_2,dive_num);
contentValues.put(COL_3,date);
contentValues.put(COL_4,location);
contentValues.put(COL_5,site);
contentValues.put(COL_6,temperature);
contentValues.put(COL_7,visibility);
contentValues.put(COL_8,max_depth);
contentValues.put(COL_9,bottom_time);
contentValues.put(COL_10,saftey);
contentValues.put(COL_11,total_time);
contentValues.put(COL_12,weight);
contentValues.put(COL_13,suit_type);
contentValues.put(COL_14,thickness);
contentValues.put(COL_15,air_type);
contentValues.put(COL_16,comments);
contentValues.put(COL_17,sign_first);
contentValues.put(COL_18,sign_last);
contentValues.put(COL_19,date_sign);
contentValues.put(COL_20,sign_dive_num);
contentValues.put(COL_21,company);
db.update(TABLE_NAME, contentValues, "ID = ?", new String[]{id});
return true;
}
public Integer deleteData (String id){
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(TABLE_NAME, "ID = ?", new String[] {id});
}
}