我有一个扩展Fragment的第一个类,以及扩展Activity的第二个类。
My Fragment工作正常,我在片段中的Intent代码是:
ImageButton button= (ImageButton) getView().findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(MyFragment.this, MyClass.class);
MyFragment.this.startActivity(myIntent); }
});
我的MyClass代码是:
public class MyClass extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The activity is being created.
}
@Override
protected void onStart() {
super.onStart();
setContentView(R.layout.MyClass);
}
}
错误是:
Gradle: cannot find symbol constructor Intent(com.xxxx.xxxx.MyFragment,java.lang.Class<com.xxxx.xxxx.MyClass>)
我不知道哪里出错了。
答案 0 :(得分:119)
使用
Intent myIntent = new Intent(v.getContext(), MyClass.class);
或
Intent myIntent = new Intent(MyFragment.this.getActivity(), MyClass.class);
开始新的活动。这是因为在为应用程序的特定组件创建Intent时,需要将Application或组件上下文作为第一个参数传递给Intent构造函数。
答案 1 :(得分:6)
或者你可以简单地开始活动,如下所示;
startActivity( new Intent(currentactivity.this, Tostartactivity.class));
答案 2 :(得分:3)
你可以用这个:
Intent intent = new Intent(getApplicationContext(), ClassName.class);
答案 3 :(得分:0)
您无法使用Intent's Context
创建意图。因此,您需要使用Fragment's
Parent Activity
Context
Intent intent = new Intent(getActivity(),MyClass.class);
答案 4 :(得分:0)
使用
.getActivity()
解决了这个问题:
例如。
Intent i= new Intent(MainActivity.this.getActivity(), Next.class);
startActivity(i);
希望这有帮助。
干杯。
答案 5 :(得分:0)
我的活动代码中出现了相同的错误,但片段中却没有。显示不同行的构造函数错误,例如new Intent(From.this,To.class)和new ArrayList <>等。
通过关闭Android Studio并将存储库移至其他位置并再次打开项目来修复。解决了问题。
似乎是Android Studio的构建问题。
答案 6 :(得分:0)
这对我有用
ncharacters.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent openncharacter = new Intent(getApplicationContext(),ncharacters.class);
startActivity(openncharacter);
}
});