我尝试将开放源代码项目用于学校应用程序。但是,我编写了自己的数据库并删除了私有数据库。当我尝试运行我的应用程序时,日志猫显示以下错误:错误:找不到符号方法execAction(String)。项目中有几个execAction函数,每个函数都有红线下划线,请有人看我的代码并告诉我问题出在哪里。 Appbase.execAction 这是我尝试过的:
AppBase.class
package com.andisofttechnology.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import java.util.ArrayList;
public class AppBase extends AppCompatActivity {
ArrayList<String> basicFields;
gridAdapter adapter;
public static ArrayList<String> divisions ;
GridView gridView;
public static DatabaseHandler handler;
public static Activity activity;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mai_menu, menu);
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.base_layout);
basicFields = new ArrayList<>();
handler = new DatabaseHandler(this);
activity = this;
getSupportActionBar().show();
divisions = new ArrayList();
divisions.add("S1 COMPUTER SCIENCE");
divisions.add("S2 COMPUTER SCIENCE");
divisions.add("S3 COMPUTER SCIENCE");
divisions.add("S4 COMPUTER SCIENCE");
divisions.add("S5 COMPUTER SCIENCE");
divisions.add("S6 COMPUTER SCIENCE");
divisions.add("S7 COMPUTER SCIENCE");
gridView = (GridView)findViewById(R.id.grid);
basicFields.add("ATTENDANCE");
basicFields.add("SCHEDULER");
basicFields.add("NOTES");
basicFields.add("PROFILE");
basicFields.add("CGPA CALCULATOR");
adapter = new gridAdapter(this,basicFields);
gridView.setAdapter(adapter);
}
public void loadSettings(MenuItem item) {
Intent launchIntent = new Intent(this,SettingsActivity.class);
startActivity(launchIntent);
}
public void loadAbout(MenuItem item) {
Intent launchIntent = new Intent(this,About.class);
startActivity(launchIntent);
}
}
Scheduler.class
package com.andisofttechnology.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentUris;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class scheduler extends AppCompatActivity implements AdapterView.OnItemLongClickListener{
ListView listView;
ArrayAdapter adapter;
ArrayList<String> subs;
ArrayList<String> subx;
ArrayList<String> times;
Activity activity = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scheduler);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_sch);
assert fab != null;
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent launchIntent = new Intent(getBaseContext(), make_schedule.class);
startActivity(launchIntent);
}
});
subs = new ArrayList<>();
times = new ArrayList<>();
subx = new ArrayList<>();
listView = (ListView)findViewById(R.id.schedulerList);
loadSchedules();
listView.setOnItemLongClickListener(this);
}
private void loadSchedules() {
subs.clear();
times.clear();
String qu = "SELECT * FROM SCHEDULE ORDER BY subject";
Cursor cursor = AppBase.handler.execQuery(qu);
if(cursor==null||cursor.getCount()==0)
{
Toast.makeText(getBaseContext(),"No Schedules Available",Toast.LENGTH_LONG).show();
}else
{
cursor.moveToFirst();
while(!cursor.isAfterLast())
{
subx.add(cursor.getString(1));
subs.add(cursor.getString(1) + "\nfor " + cursor.getString(0) + "\nat " + cursor.getString(2) + " : " + cursor.getString(3));
times.add(cursor.getString(2));
cursor.moveToNext();
}
}
ArrayAdapter adapter = new ArrayAdapter(getBaseContext(),android.R.layout.simple_list_item_1,subs);
listView.setAdapter(adapter);
}
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
AlertDialog.Builder alert = new AlertDialog.Builder(activity);
alert.setTitle("Delete Schedule?");
alert.setMessage("Do you want to delete this schedule ?");
alert.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String qu = "DELETE FROM SCHEDULE WHERE subject = '" + subx.get(position) + "' AND timex = '" + times.get(position) + "'";
if (AppBase.handler.execAction(qu)) {
Toast.makeText(getBaseContext(), "Deleted", Toast.LENGTH_LONG).show();
loadSchedules();
} else {
Toast.makeText(getBaseContext(), "Failed", Toast.LENGTH_LONG).show();
loadSchedules();
}
dialog.dismiss();
}
});
alert.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alert.show();
return true;
}
public void refresh(MenuItem item) {
loadSchedules();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.scheduler_menu, menu);
return true;
}
}