如何使用intent在新活动中启动特定功能?

时间:2015-08-15 08:51:59

标签: java android

我是Android编程的新手,发现很难处理这个问题。是否可以使用Intent调用另一个活动的特定方法?

我在this帖子中尝试了解决方案,但由于我使用的是数据库,因此出现错误:

  对于sqliteopenhelper,

super.onNewIntent未定义。

1 个答案:

答案 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