GVKun编程网logo

The method isEmpty() is undefined for the type Str

10

在本文中,我们将给您介绍关于ThemethodisEmpty()isundefinedforthetypeStr的详细内容,此外,我们还将为您提供关于#definelist_entry(ptr,typ

在本文中,我们将给您介绍关于The method isEmpty() is undefined for the type Str的详细内容,此外,我们还将为您提供关于#define list_entry(ptr, type, member) \ container_of(ptr, type, member)、android对话框显示异常报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.、android点滴2:The method...in the type View is not...、Eclipse常见问题解决 - The method getTextContent() is undefined for the type Node.的知识。

本文目录一览:

The method isEmpty() is undefined for the type Str

The method isEmpty() is undefined for the type Str

今天测试人员在svn中检出代码部署环境时出现以下错误导致一样代码一样的数据库而显示的内容不一样:
The method isEmpty() is undefined for the type String

 

这个问题原因很简单,其实就是JDK版本太低,换成1.6及以上的就可以了。

#define list_entry(ptr, type, member) \   container_of(ptr, type, member)

#define list_entry(ptr, type, member) \ container_of(ptr, type, member)

#define container_of(ptr, type, member) ({            \
    const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
    (type *)( (char *)__mptr - offsetof(type,member) );})

该宏在 Linux 内核代码 (版本 2.6.22) 中定义如下:
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER);
分析:
(TYPE *) 0, 将 0 强制转换为 TYPE 型指针,记 p = (TYPE *) 0,p 是指向 TYPE 的指针,它的值是 0。那么 p->MEMBER 就是 MEMBER 这个元素了,而 &(p->MEMBER) 就是 MENBER 的地址,而基地址为 0,这样就巧妙的转化为了 TYPE 中的偏移量。再把结果强制转 换为 size_t 型的就 OK 了,size_t 其实也就是 int。
typedef __kernel_size_t  size_t;
typedef unsigned int __kernel_size_t;
可见,该宏的作用就是求出 MEMBER 在 TYPE 中的偏移量。
 

关于 typeof, 这是 gcc 的 C 语言扩展保留字,用于声明变量类型.
const typeof (((type *) 0->member ) *__mptr = (ptr); 意思是声明一个与 member 同一个类型的指针常量 *__mptr, 并初始化为 ptr. 也就是该数据结构体中通用链表成员变量的地址。即 member 的入口地址
(type *)( (char *)__mptr - offsetof (type,member) ); 意思是__mptr 的地址减去 member 在该 struct 中的偏移量得到的地址,再转换成 type 型指针。该指针就是 member 的入口地址了.
在一个数据结构体变量通用链表结构体成员变量所在的地址(也就是 member 的入口地址)减去通用链表结构体成员变量在该数据结构体变量中的在偏移量,得到的结果就是该数据结构体变量的入口地址。
 

 

通用链表的应用实例:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/list.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("David Xie");
MODULE_DESCRIPTION("List Module");
MODULE_ALIAS("List module");

struct student
{
    char name[100];
    int num;
    struct list_head list;
};

struct student *pstudent;
struct student *tmp_student;
struct list_head student_list;
struct list_head *pos;

int mylist_init(void)
{
	int i = 0;
	
	INIT_LIST_HEAD(&student_list);
	
	pstudent = kmalloc(sizeof(struct student)*5,GFP_KERNEL);
	memset(pstudent,0,sizeof(struct student)*5);
	
	for(i=0;i<5;i++)
	{
	    sprintf(pstudent[i].name,"Student%d",i+1);
		pstudent[i].num = i+1; 
		list_add( &(pstudent[i].list), &student_list);
	} 
	
	
	list_for_each(pos,&student_list)
	{
		tmp_student = list_entry(pos,struct student,list);
		printk("<0>student %d name: %s\n",tmp_student->num,tmp_student->name);
	}
	
	return 0;
}


void mylist_exit(void)
{	
	int i ;
	/* 实验:将for换成list_for_each来遍历删除结点,观察要发生的现象,并考虑解决办法 */
	for(i=0;i<5;i++)
	{
		list_del(&(pstudent[i].list));     
	}
	
	kfree(pstudent);
}

module_init(mylist_init);
module_exit(mylist_exit);

 

android对话框显示异常报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.

android对话框显示异常报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.

今天写android实验碰到到一个问题,在用AlertDialog.Builder类构建一个对话框之后,调用Builder.show()方法时抛出异常如下:

06-16 21:52:16.456 5017-5017/xyz.qlrr.sqliteapp W/System.err: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
06-16 21:52:16.457 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:359)
06-16 21:52:16.457 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:328)
06-16 21:52:16.457 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:289)
06-16 21:52:16.457 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:83)
06-16 21:52:16.457 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.app.AlertController.installContent(AlertController.java:225)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:257)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.app.Dialog.dispatchOnCreate(Dialog.java:471)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.app.Dialog.show(Dialog.java:334)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.app.AlertDialog$Builder.show(AlertDialog.java:955)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at xyz.qlrr.sqliteapp.DisplayActivity.onItemClick(DisplayActivity.java:76)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.widget.AdapterView.performItemClick(AdapterView.java:310)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.widget.AbsListView.performItemClick(AbsListView.java:1187)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.widget.AbsListView$PerformClick.run(AbsListView.java:3108)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.widget.AbsListView.onTouchUp(AbsListView.java:4099)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.widget.AbsListView.onTouchEvent(AbsListView.java:3781)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.View.dispatchTouchEvent(View.java:9328)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2564)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2250)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2570)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2452)
06-16 21:52:16.458 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1749)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.app.Activity.dispatchTouchEvent(Activity.java:2927)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2405)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.View.dispatchPointerEvent(View.java:9548)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4515)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4313)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3823)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3883)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3842)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3990)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3850)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4047)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3823)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3883)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3842)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3850)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3823)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6239)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6213)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6174)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6346)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.ViewRootImpl$ColorWindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7597)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
06-16 21:52:16.459 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.os.MessageQueue.nativePollOnce(Native Method)
06-16 21:52:16.460 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.os.MessageQueue.next(MessageQueue.java:323)
06-16 21:52:16.460 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.os.Looper.loop(Looper.java:163)
06-16 21:52:16.460 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5769)
06-16 21:52:16.460 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
06-16 21:52:16.460 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-16 21:52:16.460 5017-5017/xyz.qlrr.sqliteapp W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)

上网百度查找答案说是因为活动是继承了android.support.v7.app.AppCompatActivity,而且主题设置为了和这个活动父类不兼容的主题。我查看代码不是这个原因。后来发现在创建AlertDialog.Builder()的使用调用的上下文是用getApplicationContext()方法获取的,将上下文改为当前的活动对象this问题就解决了。

修改前:

 1 AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
 2             builder.setMessage("确认").setMessage("您确定要删除这条记录吗?");
 3             builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
 4                 @Override
 5                 public void onClick(DialogInterface dialogInterface, int i) {
 6                     TextView idView = (TextView) view.findViewById(R.id.idView);
 7                     String s = idView.getText().toString();
 8                     Integer id = Integer.valueOf(s);
 9                     SQLiteHelper sqLiteHelper = new SQLiteHelper(getApplicationContext());
10                     boolean b = sqLiteHelper.delete(id);
11                     Toast.makeText(DisplayActivity.this,b?"删除成功":"删除失败",Toast.LENGTH_SHORT).show();
12                     if(b){
13                         loadlistview();
14                     }
15                 }
16             });
17             builder.setPositiveButton("取消",null);
18             builder.show();

 

修改后:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("确认").setMessage("您确定要删除这条记录吗?");
            builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    TextView idView = (TextView) view.findViewById(R.id.idView);
                    String s = idView.getText().toString();
                    Integer id = Integer.valueOf(s);
                    SQLiteHelper sqLiteHelper = new SQLiteHelper(getApplicationContext());
                    boolean b = sqLiteHelper.delete(id);
                    Toast.makeText(DisplayActivity.this,b?"删除成功":"删除失败",Toast.LENGTH_SHORT).show();
                    if(b){
                        loadlistview();
                    }
                }
            });
            builder.setPositiveButton("取消",null);
            builder.show();

 

android点滴2:The method...in the type View is not...

android点滴2:The method...in the type View is not...

The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (Activity_02Activity.MyButtonListener)

 

当出现这个错误时是因为倒错包了!查看.java文件的头部可知,导入的是import android.content.DialogInterface.OnClickListener;其实我们要的包是import android.view.View.OnClickListener;将其view这个包替换content的包即可解决!

 

 

 


 

Eclipse常见问题解决 - The method getTextContent() is undefined for the type Node.

Eclipse常见问题解决 - The method getTextContent() is undefined for the type Node.

现象:

项目报错The method getTextContent() is undefined for the type Node.

原因:

项目中如果加入了xfire等其他xml解析包的话,使用org.w3c.dom.Node下的getTextContent()方法会出现The method getTextContent() is undefined for the type Node.提示。

解决办法:

前提是项目使用的Java版本是JDK1.5以上。

选中项目右键,Build Path -> Configure Build Path... -> Order and Export,把JRE System Library提升到顶部即可。

今天关于The method isEmpty() is undefined for the type Str的分享就到这里,希望大家有所收获,若想了解更多关于#define list_entry(ptr, type, member) \ container_of(ptr, type, member)、android对话框显示异常报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.、android点滴2:The method...in the type View is not...、Eclipse常见问题解决 - The method getTextContent() is undefined for the type Node.等相关知识,可以在本站进行查询。

本文标签: