天道酬勤,学无止境

Eclipse 在覆盖 Android 方法时插入 arg0、arg1 等而不是正确的参数名称(Eclipse inserting arg0, arg1 etc. instead of proper parameter names when overriding Android methods)

问题

当我在 Eclipse 中覆盖 Android 类的方法时,我会得到无用的参数名称,例如“arg0”、“arg1”等。例如,当从SQLiteOpenHelper覆盖方法时,我会得到:

@Override
public void onCreate(SQLiteDatabase arg0) {
    // TODO Auto-generated method stub
}

@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub
}

我发现了各种关于此的帖子,但似乎没有一个被接受的解决方案对我有用。 这也很奇怪,因为它似乎只在某些时候发生。 例如,上述测试中的构造函数具有正确命名的参数。

我在 Android 4.4.2 的 Android SDK 管理器中安装了“Android SDK 文档”。 我是否仍然需要以某种方式手动附加文档(甚至源代码?)才能可靠地工作,如果是这样,我该怎么做?

谢谢!

回答1

正如评论中提到的@greg-449,需要附加 Android 源代码才能使其正常工作。

按照此链接中的步骤似乎可以解决此问题。

万一将来链接断开,步骤如下:

  1. 使用 SDK 管理器下载“Android SDK 的源代码”

  2. 右键单击 Eclipse Package Explorer 中的android.jar (在Android {version}节点下),然后单击属性

  3. 在“Java Source Attachment”下,输入下载的源目录的路径,该目录位于{sdk}/sources/android-{version}

然后我得到这个:

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
}

更新:作为参考,Android Studio(在撰写本文时为 v0.4.2)中出现了类似的问题。 可以通过 File -> Other Settings -> Default Project Structure 附加源,选择 SDKs、android 平台并在“Sourcepath”选项卡中添加源。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 使用HttpsURLConnection时如何覆盖Android发送到服务器的密码列表?(How to override the cipherlist sent to the server by Android when using HttpsURLConnection?)
    问题 在TLS协商期间,客户端将支持的密码列表发送到服务器,服务器选择一个,然后开始加密。 当我使用HttpsURLConnection进行通信时,我想更改由Android发送到服务器的密码列表。 我知道我可以在HttpsURLConnection对象上使用setSSLSocketFactory来将其设置为使用SSLSocketFactory 。 当我想更改SSLSocket返回的SSLSocketFactory使用的trustmanager等时,这很有用。 我知道,通常可以使用SSLParameters对象编辑此密码套件列表,并使用它们提供的方法将其传递给SSlsocket或SSLEngine对象。 但是SSLSocketFactory似乎没有公开这种方法! 我找不到改变传递给HttpsURLConnection的SSLSocketFactory创建的返回的SSLSocket对象的SSLParameters的方法。 该怎么办? 我想这与Java一般有关,而不仅仅是Android。 也许有一种OO方法可以做到这一点(例如,扩展SSLSocketFactory并将其提供给HttpsURLConnection吗?) 回答1 这段代码有点原始。 请谨慎使用。 public class PreferredCipherSuiteSSLSocketFactory extends
  • Android:活动中的 onListItemClick(Android: onListItemClick in Activity)
    问题 上一次我在这里问了一个问题,我学到了很多,所以我想值得再试一次。 我从这个链接使用 Fedor 的惰性列表:ListView 中的图像延迟加载 它就像一个魅力。 但是,Fedor 正在让他的主类扩展Activity而不是ListActivity 。 因此,我无法再使用 listItemClick 侦听器。 Eclipse 声明了一些关于onListItemClick()错误。 当我转动时它起作用 @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); // Intent launcher here } 进入 protected void onListItemClick(ListView l, View v, int position, long id) { // Intent launcher here } 但是意图启动器不起作用。 Toast 通知也没有。 当我在ListActivity打开Activity时,Eclipse ListActivity ,但我的模拟器让我强制关闭。 如何得到 要么onListItemClick()单击活动(最好)
  • 加载器在方向更改时重新启动(Loader restarts on orientation change)
    问题 在http://developer.android.com/guide/components/loaders.html上的有关Loaders的Android文档中,该文件说Loader的属性之一是: 在更改配置后重新创建它们时,它们会自动重新连接到最后一个加载程序的游标。 因此,他们不需要重新查询数据。 以下代码似乎无法反映该行为,创建了一个新的Loader,完成了对ContentResolver的查询,然后旋转屏幕,并重新创建了Loader! public class ReportFragment extends Fragment implements LoaderCallbacks<Cursor> { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getLoaderManager().initLoader(1, null, this); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout
  • 您如何调试PHP脚本? [关闭](How do you debug PHP scripts? [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 4年前关闭。 已锁定。 该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。 它目前不接受新的答案或互动。 您如何调试PHP脚本? 我知道基本调试,例如使用错误报告。 PHPEclipse中的断点调试也非常有用。 在phpStorm或任何其他IDE中进行调试的最佳方式(快速简便)是什么? 回答1 尝试使用Eclipse PDT来设置一个具有上述调试功能的Eclipse环境。 与旧方法var_dump相比,调试代码的能力是一种更好的方法,它可以在各个点进行打印并在各个位置进行打印,以查看流向何处出错。 但是,当所有其他方法都失败了,而我所拥有的只是SSH和vim时,我仍然使用var_dump() / die()来查找代码向南的位置。 回答2 您可以在与JavaScript相同的环境中使用Firephp加载项对Firebug进行调试,以调试php。 我还使用前面提到的Xdebug来分析php。 回答3 这是我的小调试环境: error_reporting(-1); assert_options(ASSERT_ACTIVE, 1); assert_options(ASSERT_WARNING, 0); assert_options(ASSERT_BAIL, 0); assert_options(ASSERT_QUIET
  • OnTouch 有效,但 OnClickListener 无效?(OnTouch works, but OnClickListener doesn't?)
    问题 我创建了一个可以重用的小部件/控件,我通过扩展RelativeLayout创建它。 然后,在我的一个活动中,我循环创建了一堆这些小部件。 但是,当我想让每个小部件响应点击时,我遇到了一个问题。 我发现设置OnTouchListener有效: this.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View arg0, MotionEvent arg1) { //Triggers debug message } }); 但OnClickListener没有: this.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { //Doesn't trigger debug message } }); 为什么是这样? 回答1 您应该确保 TouchListener 没有“消耗”触摸事件。 如果您从onTouch()方法返回 true,Android 将认为它已消耗,而不会将其传递给其他各种触摸处理程序(我假设将包括 ClickListener)。 你应该做: this.setOnTouchListener(new OnTouchListener(){ public boolean onTouch
  • AutoCompleteTextView 在选择后显示 'android.database.sqlite.SQLiteCursor@'...(AutoCompleteTextView displays 'android.database.sqlite.SQLiteCursor@'… after making selection)
    问题 我正在使用以下代码为 AutoCompleteTextView 设置适配器 (SimpleCursorAdapter) mComment = (AutoCompleteTextView) findViewById(R.id.comment); Cursor cComments = myAdapter.getDistinctComments(); scaComments = new SimpleCursorAdapter(this,R.layout.auto_complete_item,cComments,new String[] {DBAdapter.KEY_LOG_COMMENT},new int[]{R.id.text1}); mComment.setAdapter(scaComments); auto_complete_item.xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 这是实际控制的xml
  • Android:按下“后退”按钮时提示用户保存更改(Android: Prompt user to save changes when Back button is pressed)
    问题 我有一个包含几个用户可编辑项目(EditText字段,RatingBar等)的活动。 我想提示用户是否按下了后退/主页按钮,并且所做的更改尚未保存。 阅读完android文档后,似乎这段代码应该放在onPause方法中。 我尝试过将AlertDialog放在onPause中,但是显示了该对话框,然后立即将其删除,因为那里没有任何东西可以阻止暂停的完成。 到目前为止,这是我想出的: @Override protected void onPause() { super.onPause(); AlertDialog ad = new AlertDialog.Builder(this).setMessage( R.string.rating_exit_message).setTitle( R.string.rating_exit_title).setCancelable(false) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // User selects OK, save changes to db } }).setNeutralButton
  • Android:在任务活动的窗口上叠加(Android: Overlay on Window over Activities of a Task)
    问题 我想创建一个像 HUD 一样的 Overlay,它在我的应用程序活动堆栈(我的应用程序的任务)更改期间驻留在屏幕上。 我找到了几个使用 WindowManager 的示例,但如果需要,我无法弄清楚正确 z-index 的参数化。 要么削弱下一个活动将在我的叠加层之上,要么加强叠加层是一个系统范围的叠加层,当应用程序移入后台时也可见。 我的目标是在属于我的应用程序或任务(应用程序将是首选)的所有活动之上显示一个视图。 我知道应用程序和任务在 android 上是两个不同的东西...... 我明确不想要的是使用需要 android.permission.SYSTEM_ALERT_WINDOW 的系统范围的窗口 ---我的用例- 我正在实施一个流程,其中包括一个为用户输入提供表单的活动。 必须以相当复杂的方式处理用户输入,产生 +/- 10 个状态的可能结果。 处理最多可能需要 10 分钟,根据该过程的结果,我想显示相应的视图。 在进程运行时,我打算让用户保持更新,但不能让他浏览应用程序(除非中止进程)。 长时间运行的操作的每个可能结果都将在不同的活动中呈现。 我很清楚,有几种可能的方法(例如,只有一项活动)。 但该决定已经做出,超出了该问题的范围。 我已经实现了一个使用系统 Windows 来显示覆盖的解决方案。为了隐藏覆盖,我必须依靠 onStart、onStop 事件并解释
  • Android Viewpager 保存数据和视图(Android Viewpager saving data and views)
    问题 希望有人可以帮助我解决 Viewpagers 和保存数据的小问题/困惑。 问题: 滚动浏览我拥有的四个视图时,第一个视图有两个微调器、两个显示字符串或所选项目的文本视图。 如果我滚动到第三页并返回到第二页,第一个视图中的数据将丢失。 母鸡需要保存数据。 这会在下面提到的两个例程中完成吗? (最好的猜测是)如果是这样,需要说明什么样的命令? 代码: @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } 额外信息:viewpager 正在使用 public Object instantiateItem(View collection, int position) { } 完整的方法列表如下: @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0
  • 如何正确覆盖 SpinnerAdapter 的方法(How to correctly overwrite methods of SpinnerAdapter)
    问题 我使用 SpinnerAdapter 来显示 Spinner。 为此,我定义了一个实现 SpinnerAdapter 的类。 不幸的是,我不知道如何覆盖 SpinnerAdapter 的一些方法: @Override public View getDropDownView(int position, View arg1, ViewGroup arg2) { } @Override public int getItemViewType(int arg0) { } @Override public boolean hasStableIds() { } @Override public void registerDataSetObserver(DataSetObserver arg0) { } @Override public void unregisterDataSetObserver(DataSetObserver observer) { } 有谁知道我必须在这些方法中的每一个中编码什么? 回答1 感谢您的回答,但我还是想与您分享我在搜索更多参考资料后使用的解决方案: 而不是只是在我的适配器中实现 SpinnerAdapter,我扩展 BaseAdapter 并实现 SpinnerAdapter: private class ListAdapter extends
  • 创建系统覆盖窗口(始终在顶部)(Creating a system overlay window (always on top))
    问题 我正在尝试创建一个始终操作于顶部的按钮/ clickable-image,该按钮始终保持在所有窗口的顶部。 概念证明是 此处-智能任务栏(在AppBrain上) V1.4.0侧边栏样式SWKey-按钮救星(在xda-developers上) 我已经成功,并且现在正在运行服务。 该服务始终在屏幕的左上角显示一些文本,同时用户可以以正常方式与其余应用自由交互。 我正在做的是子类ViewGroup并将其添加到带有标志TYPE_SYSTEM_OVERLAY根窗口管理器中。 现在,我想添加一个按钮/可单击图像代替此文本,该文本本身可以接收触摸事件。 我尝试为整个ViewGroup覆盖“ onTouchEvent”,但未收到任何事件。 如何仅在始终显示在顶部的视图组的某些部分上接收事件? 请提示。 public class HUD extends Service { HUDView mView; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); Toast.makeText(getBaseContext(),"onCreate", Toast.LENGTH_LONG).show(); mView = new
  • 多个视图上的相机预览 - 初始化/释放处理(Camera preview on multiple views - initialize/release handling)
    问题 我将 Android 相机的使用封装到一个类 (CameraAccess) 中,该类使用不可见的 SurfaceTexture 作为预览并实现 Camera.PreviewCallback。 在这个回调中,我得到了当前帧的字节数组,然后我想在多个视图/片段上使用它。 我的问题是生命周期管理。 通常相机在单个视图中使用,并在 onSurfaceCreated 和 onSurfaceDestroyed 中初始化/释放(参见 SurfaceHolder.Callback)。 但在我的场景中,我需要在多个视图上使用预览。 每个视图将自身添加为 CameraAccess 类的回调。 我想把 CameraAccess 作为一个成员放到 Application 类中。 但是当您按下主页按钮时,应用程序仍然存在,但所有视图都被破坏了。 你将如何处理相机的初始化和释放? 回答1 这是我解决它的方法。 有一些问题需要您解决。 首先,OpenCV 矩阵的矩阵/颜色转换,这是 Android 中非常昂贵的操作。 因此,建议只执行一次。 此类还确保原始矩阵仅转换一次,并且仅在 UI 请求位图时转换。 import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; import org.opencv.core.Mat; import
  • 使用自定义比较器时使用 TreeSet 还是 ArrayList 更好(Is it better to use a TreeSet or ArrayList when using a custom comparator)
    问题 我已经实现了一个图表。 我想根据顶点的度数对给定的顶点子集进行排序。 因此,我编写了一个名为DegreeComparator的自定义比较器。 private class DegreeComparator implements Comparator<Integer> { @Override public int compare(Integer arg0, Integer arg1) { if(adj[arg1].size() == adj[arg0].size()) return arg1 - arg0; else return adj[arg1].size() - adj[arg0].size()); } } 那么,以下哪一项更有效? 使用TreeSet public Collection<Integer> sort(Collection<Integer> unsorted) { Set<Integer> sorted = new TreeSet<Integer>(new DegreeComparator()); sorted.addAll(unsorted); return sorted; } 使用ArrayList Collections.sort(unsorted, new DegreeComparator()); 请注意,第二种方法不是函数,而是一行代码。 直觉上
  • AsyncHttpClient 身份验证失败(AsyncHttpClient Authentication failed)
    问题 我试图从网站获得身份验证。 我正在使用AsyncHttpClient 。 这是我正在尝试的代码。 这是我的代码, public class LoginActivity extends Activity { String tag = "LoginActivity"; Button requestBtn; AsyncHttpClient httpClient = new AsyncHttpClient(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); requestBtn = (Button) findViewById(R.id.upload_file); PersistentCookieStore myCookieStore = new PersistentCookieStore(this); httpClient.setCookieStore(myCookieStore); httpClient.setBasicAuth(ApplicationConstants.userName, ApplicationConstants.password
  • 在 Android 的 Spinner 中关闭下拉菜单(Closing dropdown in Spinner in Android)
    问题 在 Android 中打开和关闭微调器时,我需要为箭头图标设置动画。 我可以在打开微调器时旋转箭头:我只是在Spinner上放了一个setOnTouchListener 。 当下拉菜单关闭或隐藏时,问题就来了,因为我不知道如何在该操作上设置侦听器或类似的东西。 如果可能的话,有人知道如何做到这一点吗? 提前非常感谢。 回答1 我不知道为什么谷歌这么久都做不到,但是你可以这样解决问题: 您必须覆盖 Spinner 的受保护方法“onDetachedFromWindow”,将其设为公共方法,并通过单击 CustomSpinnerAdapter 中的项目来调用它。 例如: public class CustomSpinner extends Spinner { Context context = null; public CustomSpinner(Context context) { super(context); } public CustomSpinner(Context context, int mode) { super(context, mode); } public CustomSpinner(Context context, AttributeSet attrs) { super(context, attrs); } public CustomSpinner
  • 错误:alertFunction 类型中的 onCreate(Bundle) 方法不适用于参数 ()(ERROR: The method onCreate(Bundle) in the type alertFunction is not applicable for the arguments ())
    问题 I'm a beginner and i'm getting that error on my Main Activity file. I hope you can help me on my problem. I'm trying to make a Reminder Message sender for my project i really don't know how to correct the errors because i'm a newbie. MainActivity codes: import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.SmsManager; import android.view.View; import android.widget.Button; import android
  • 动态算子解析(dynamic operator resolution)
    问题 我有一个通用方法,它通过将操作数之一转换为dynamic来调用运算符。 有两种不同的调用: //array is T[][] //T is MyClass array[row][column] != default(T) as dynamic 这有效并调用static bool operator !=(MyClass a, MyClass b) (即使双方都是null )。 令我惊讶的是以下行的行为: //array, a and b are T[][] //T is MyClass array[row][column] += a[line][i] * (b[i][column] as dynamic); 这叫 public static MyClass operator *(MyClass a, object b)和public static MyClass operator +(MyClass a, object b) 并不是 public static MyClass operator *(MyClass a, MyClass b)和 public static MyClass operator +(MyClass a, MyClass b) 。 删除(MyClass, object)运算符导致 Microsoft.CSharp.RuntimeBinder
  • 如何解决viewpager:指定的子代已经有一个父代。 您必须先在孩子的父母上调用removeView()(How to solve for viewpager : The specified child already has a parent. You must call removeView() on the child's parent first)
    问题 在我的项目中,我使用的是viewpager和三个名为History , Main , Map选项卡。 主要活动包括计时器,秒表等。 地图显示谷歌地图。 现在进入“历史记录”页面,我仅使用简单的Textview。 Viewpager的流向:历史记录-主要-地图 我将Main设置为当前项目(默认显示Main标签)。现在,当我从Main > Map and Map > Main >滑动时,它的工作效果非常完美。 但是从Main > History滑动时没有错误,但是从History返回Main ( History > Main )月食给我这样的错误: E/AndroidRuntime( 533): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 仅供参考,我正在将intent into Map Activity 。请检查以下代码。请让我知道如何解决我的问题。 ViewPager类: @Override public Fragment getItem(int position) { // return SwipeyTabFragment.newInstance(TITLES
  • Android:没有输入任何文字时,AutoCompleteTextView会显示建议(Android: AutoCompleteTextView show suggestions when no text entered)
    问题 我正在使用AutoCompleteTextView ,当用户单击它时,即使它没有文本,我也想显示建议-但是setThreshold(0)与setThreshold(1)完全相同-因此用户必须至少输入1个字符显示建议。 回答1 这是记录的行为: 当threshold小于或等于0时,将应用阈值1。 您可以通过showDropDown()手动显示下拉列表,因此也许可以安排在需要时显示它。 或者,将AutoCompleteTextView子类化并覆盖enoughToFilter() ,并enoughToFilter()返回true 。 回答2 这是我的类InstantAutoComplete 。 在AutoCompleteTextView和Spinner之间。 import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.AutoCompleteTextView; public class InstantAutoComplete extends AutoCompleteTextView { public InstantAutoComplete(Context context) { super(context);
  • 如果我的应用程序在 API 8 模拟器上运行,则 Internet 连接不起作用(Internet connection not working if my App runs on a API 8 Emulator)
    问题 嗨,感谢您的帮助,我有一个应用程序,可以在 Eclipse 中针对 API 17 进行编译。 该应用程序执行一些简单的互联网连接。 现在,当我在带有 API 17 的模拟器上进行测试时,一切正常。 如果我针对具有 API 8 的模拟器对其进行测试,则该应用程序显然无法从我的应用程序(模拟器上的 Web 浏览器工作正常并正常加载)执行网络连接(adMob 不显示,HttpGet 显然没有检索任何内容...)。 并且 adMob 也不会在带有 API 8 或 10 的模拟器上加载(它会在 API 17 模拟器上加载)。 非常感谢任何帮助!!! 这是我的主要活动: public class QuotesActivity extends Activity implements MyInterface { private String url2; public static ArrayList<Stock> lt; public static ArrayList<Stock> favQ; public MyAdapter myAdap; public Intent intent; public ListView lv; public FavManager fm; private AdView adView; @Override public void onCreate(Bundle