片段访问另一个Java方法
我的片段注释是访问fragment To do List的delete方法,而不是执行它自己的代码行。我怎样才能纠正它?其余的方法工作正常 哪里出了问题 片段注释中的删除代码:片段访问另一个Java方法,java,android,android-fragments,Java,Android,Android Fragments,我的片段注释是访问fragment To do List的delete方法,而不是执行它自己的代码行。我怎样才能纠正它?其余的方法工作正常 哪里出了问题 片段注释中的删除代码: @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMen
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int listpos = info.position;
String io = list1.getItemAtPosition(listpos).toString();
StringTokenizer s=new StringTokenizer(io);
if (item.getTitle()=="Delete") {
ArrayList<String> all = new ArrayList<String>();
while (s.hasMoreTokens()) {
all.add(s.nextToken());
}
Toast.makeText(getContext(), all.get(0).toString(), Toast.LENGTH_SHORT).show();
String query = "delete from notes where heading = '"+all.get(0).toString()+"';";
database.execSQL(query);
//database.close();
Intent n = new Intent(getContext(), MainActivity.class);
startActivity(n);
}
到doList的碎片代码:
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int listpos = info.position;
String io = list.getItemAtPosition(listpos).toString();
StringTokenizer s=new StringTokenizer(io);
if (item.getTitle()=="Delete") {
ArrayList<String> al = new ArrayList<String>();
while (s.hasMoreTokens()) {
al.add(s.nextToken());
Toast.makeText(getContext(), al.get(0).toString(), Toast.LENGTH_SHORT).show();
String query1 = "delete from todolist where elist = '" + al.get(0).toString() + "';";
database.execSQL(query1)
Intent n = new Intent(getContext(), MainActivity.class);
startActivity(n);
}
使用.equals方法比较字符串。由于这个原因,你的if条件变假了。因此,替换
item.getTitle()=="Delete"
与
要比较字符串,需要使用equals或matches方法
因此,在您的情况下,您需要纠正以下if条件
if (item.getTitle().matches("Delete")) {
}
或者在另一个场景中,您可以使用
if (item.getTitle().equals("Delete")) {
}
如果getTitle返回null,item.getTitle.equalsDelete将提供NullPointerException。匹配不是用来比较精确字符串的。它是用于正则表达式的。如果getTitle返回类似于.+的值,那么您的条件将为true。请参见:Delete.matches.+返回true。@Kaushal28因此,您应该保留一个条件来检查item.getTitle!=null,然后在其中实现上述条件。另外,如果您这样写,请确保在try/catch block下编写,但不需要try-catch和额外条件:Delete.equalsitem.getTitle@正如我在你的案例中所说的,你可以使用。希望它能帮助我在todolist片段中实现该方法时==可以完美地工作。问题是notes fragment实现的是todo片段的OnContextItemSelected,而不是notes本身的OnContextItemSelected。fragment notes和todolist扩展了什么@AkshraGupta,他们也有同样的活动吗?如果是,请参阅:@AshishRanjan感谢您提供链接。虽然它没有回答我的问题,但它让我找到了另一个问题的答案。在使用片段时,我不得不使用android.view.MenuItem,而不是使用MenuItem。
if (item.getTitle().equals("Delete")) {
}