34

我有一个自定义视图,并希望访问其活动中可用的字符串。我已经看到getContext()在视图类中使用的代码,但是没有方法可以访问通过意图对其活动可用的字符串。如何使活动中的字符串对其自定义视图可用?

4

2 回答 2

42

View 类中的 getContext() 方法返回传递给其构造函数的上下文。通常这就是您想要的活动(活动扩展上下文)。所以这可能对你有用:

爪哇:

((Activity)getContext()).someMethod(...);

科特林:

(context as? Activity)?.someMethod(...)
于 2011-10-12T20:56:50.577 回答
-8

我仍然是 java 和 android 的菜鸟,所以这可能行不通,但我只是想帮忙。

您应该能够使用“putExtra”和“getExtra”将参数传递给意图/活动,例如:

在您的主要活动中:

 Intent EditDebtActivity = new Intent(getBaseContext(), EditDebt.class);
        EditDebtActivity.putExtra(DbAdapter.KEY_ROWID,dRowID);
        EditDebtActivity.putExtra(DbAdapter.KEY_DEBT, dName);
        EditDebtActivity.putExtra(DbAdapter.KEY_STARTINGAMOUNT, dStartAmount);
        EditDebtActivity.putExtra(DbAdapter.KEY_CURRENTAMOUNT, dCurrentAmount);
        EditDebtActivity.putExtra(DbAdapter.KEY_DUEDATE, dDueDate);
        EditDebtActivity.putExtra(DbAdapter.KEY_INTERESTRATE, dInterestRate);
        EditDebtActivity.putExtra(DbAdapter.KEY_MINPAYMENT, dMinPayment);
        startActivity(EditDebtActivity);

然后在新视图的“onCreate”方法中,使用以下内容:

 Bundle extras = getIntent().getExtras();
  dRowID = extras.getLong(DbAdapter.KEY_ROWID);
  String rowidname = extras.getString(DbAdapter.KEY_DEBT);
  currentamount = extras.getDouble(DbAdapter.KEY_CURRENTAMOUNT);
  startingamount = extras.getDouble(DbAdapter.KEY_STARTINGAMOUNT);
  duedate = extras.getInt(DbAdapter.KEY_DUEDATE);

显然我在这里使用了自己的代码,但是当用户单击按钮时,我将行信息传递到新活动中。

有关使用 putextra 和 getextra 的更多信息,请参阅此 SO 链接:使用 Intent.putExtra发送数组

希望这会有所帮助,这是我对社区的第一次贡献:)

于 2011-10-12T20:15:59.700 回答