我是Android编程的新手,发现很难处理这个问题。是否可以使用Intent
调用另一个活动的特定方法?
我在this帖子中尝试了解决方案,但由于我使用的是数据库,因此出现错误:
对于sqliteopenhelper,super.onNewIntent未定义。
答案 0 :(得分:1)
应该相当简单。在代码中的某个位置定义一个常量,可以在Constants
类中,也可以在一个活动中定义:
public static final String LOAD_METHOD_ID = "load_method_id";
public static final int LOAD_METHOD_CODE = 92840;
在Activity
A:
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.putIntExtra(LOAD_METHOD_ID, LOAD_METHOD_CODE);
startActivity(i);
onCreate()
Activity
中的int code = getIntent().getIntExtra(LOAD_METHOD_ID, 0);
if (code == LOAD_METHOD_CODE) {
launchTheMethodHere()
}
:
SQLiteOpenHelper
修改强>
根据您的评论,您似乎正在尝试访问扩展static getInstance()
的类中的方法。在这种情况下,您可以通过创建该类的实例(通常使用public MyDbHelperClass extends SQLiteOpenHelper {
//...
private static MyDbHelperClass mInstance = null;
public static synchronized MyDbHelperClass getInstance(Context context) {
if (mInstance == null) {
mInstance = new MyDbHelperClass(context.getApplicationContext());
}
return mInstance;
}
方法而不是构造函数)来访问该类的方法,并从那里调用方法。例如[从here]拉出的示例:
public MyActivity extends Activity {
//...
MyDbHelperClass db = MyDbHelperClass.getInstance(this);
db.callAMethodFromHelperClass();
然后,在要从中访问方法的类中,您将使用:
Sub Button1_Click()
Dim FrstRng As Range, Lrw As Long
Dim UnionRng As Range
Dim c As Range
Lrw = Cells(Rows.Count, "A").End(xlUp).Row
Set FrstRng = Range("A2:A" & Lrw)
For Each c In FrstRng.Cells
If Int(c / 50) / (c / 50) <> 1 Then
If Not UnionRng Is Nothing Then
Set UnionRng = Union(UnionRng, c) 'adds to the range
Else
Set UnionRng = c
End If
End If
Next c
UnionRng.EntireRow.Delete
End Sub