使用Android Studio,我的MainActiviy类带有占位符片段。这个片段有按钮,但必须加载一个Activity。怎么做到这一点?我被告知尝试类似下面的内容,但新的Intent不起作用。
Button button = (Button) rootView.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.class, AnotherActivity.class);
startActivity(intent);
}
});
答案 0 :(得分:21)
如果查看documentation,您可以看到要开始活动,您将要使用以下代码
Intent intent = new Intent(getActivity(), AnotherActivity.class);
startActivity(intent);
目前,您在需要上下文对象的地方使用MainActivity.class
。如果您目前正在参加某项活动,只需传递this
即可。片段可以通过getActivity()
函数获取活动。
上面的完整代码应如下所示
Button button = (Button) rootView.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(), AnotherActivity.class);
startActivity(intent);
}
});
答案 1 :(得分:2)
您应该使用getActivity()
从Activity
发起Fragment
。
来自片段: Context
是父活动(getActivity())
。
Intent intent = new Intent(getActivity(), AnotherActivity.class);
startActivity(intent);
答案 2 :(得分:1)
Button button = (Button) view.findViewById(R.id.button_ID);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myintent = new Intent(getActivity(), CallingActivity.class);
startActivity(myintent);
}
});
答案 3 :(得分:1)
如果必须在 onBindViewHolder 中使用它,可以执行以下操作:
@Override
public void onClick(View view) {
Intent intent= new Intent(view.getContext(), MainActivity.class);
view.getContext().startActivity(intent);
}
答案 4 :(得分:0)
对于片段,编写getActivity()以获得活动上下文,而不是显式给出活动名称。 例如,如果您要从片段中打开SecondActivity,
Intent intent = new Intent(getActivity(),SecondActivity.xml); StartActivity(i);
答案 5 :(得分:0)
如果它在持有人中:
holder.itemView.setOnClickListener {
val intent = Intent(context, AnotherActivity::class.java)
intent.putExtra("text", "From fragment") . // send data
context.startActivity(intent)
}
在AnotherActivity
中:
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_another.*
class AnotherActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_another)
}
public override fun onStart() {
super.onStart()
textView.text = "Received text:" + intent.getStringExtra("text")!!
}
}
答案 6 :(得分:0)
对于片段,您必须使用getactivity()。...例如:
Intent intent = new Intent(getActivity(), AnotherActivity.class);
startActivity(intent);