mob*_*ici 5 java android android-custom-view android-intent android-activity
我正在尝试定义一个自定义 Java 类(扩展 a LinearLayout),它需要在单击时启动一个活动。我的代码如下所示:
public ArizaSatiri(Context context/*, AttributeSet attrs , final Activity aktivite*/ , JSONObject mysql_satiri)
{
super(context/*, attrs*/);
// code to initialize my view :
final Context finalContext = context;
this.setOnClickListener(new OnClickListener() {@Override
public void onClick(View v) {
Intent newIntent = new Intent(finalContext, ArizaDetaylari.class);
finalContext.startActivity(newIntent);
}//onClick
});
}
Run Code Online (Sandbox Code Playgroud)
但是当我单击实例化视图时,出现错误:
Calling startActivity() from outside of an Activity context requires the
FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Run Code Online (Sandbox Code Playgroud)
正如您从代码中看到的,我尝试将 传递Activity给构造函数,并且奏效了。但这是正确的方法吗?你会推荐哪种方式?
而且我还需要setTypeFace()在某个时候打电话。我应该为此使用上下文还是活动?
您可以将代码放入onAttachedToWindow()自定义视图类中。
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Context context = ArizaSatiri.this.getContext();
Intent intent = new Intent(context , ArizaDetaylari.class);
context.startActivity(intent);
}
});
}
Run Code Online (Sandbox Code Playgroud)
这很有帮助,因为在将视图添加到活动后调用此函数,视图具有它的引用。视图的构造函数可能在添加到活动之前运行,因此会出现错误。
如果您在 xml 中声明视图而不是以编程方式创建视图,这也应该有效。(尚未测试)
| 归档时间: |
|
| 查看次数: |
9282 次 |
| 最近记录: |