如何在 TabHost 中调用 Activity?
How do I call an Activity within a TabHost?
我有一个片段,在那个片段中我有一个按钮可以调用另一个 Activity
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_test_fragment, container, false);
Button button = (Button) view.findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getActivity(), AnotherPage.class);
startActivity(i);
}
});
现在可以正常工作了。
但是,现在我想做同样的事情,但在我在此片段中创建的 TabHost 内。
那么如何在我的选项卡中调用 getActivity()
?
我试过:
public class tab_two_graph extends AppCompatActivity {
View v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab_two_graph);
Intent intent = getParent().getIntent();
v = intent.getParcelableExtra("view");
Button b = (Button) findViewById(R.id.button2);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(v.getActivity(), Alert_main_page.class);
startActivity(i);
}
});
}
但它只是抛出错误。
您需要使用当前 activity 调用它,而不是您的视图。所以你可以使用以下方式调用它:
Button b = (Button) findViewById(R.id.button2);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(tab_two_graph.this, Alert_main_page.class);
startActivity(i);
}
});
请阅读 Start Another Activity
.
public class tab_two_graph 扩展 "AppCompatActivity" <<<<<
试试这个
Intent i = new Intent(tab_two_graph.this, Alert_main_page.class);
startActivity(i);
试试这个
Intent i = new Intent(((<YourActivityName>) getActivity()), AnotherPage.class);
startActivity(i);
只是为了向此处的答案添加更多信息。
您不必通过一个 Activity 来启动另一个 activity。您需要传递一个上下文,可以使用 tab_two_graph.this
访问该上下文。这就是以下工作的原因:
startActivity(new Intent(tab_two_graph.this, Alert_main_page.class));
我有一个片段,在那个片段中我有一个按钮可以调用另一个 Activity
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_test_fragment, container, false);
Button button = (Button) view.findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getActivity(), AnotherPage.class);
startActivity(i);
}
});
现在可以正常工作了。
但是,现在我想做同样的事情,但在我在此片段中创建的 TabHost 内。
那么如何在我的选项卡中调用 getActivity()
?
我试过:
public class tab_two_graph extends AppCompatActivity {
View v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab_two_graph);
Intent intent = getParent().getIntent();
v = intent.getParcelableExtra("view");
Button b = (Button) findViewById(R.id.button2);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(v.getActivity(), Alert_main_page.class);
startActivity(i);
}
});
}
但它只是抛出错误。
您需要使用当前 activity 调用它,而不是您的视图。所以你可以使用以下方式调用它:
Button b = (Button) findViewById(R.id.button2);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(tab_two_graph.this, Alert_main_page.class);
startActivity(i);
}
});
请阅读 Start Another Activity .
public class tab_two_graph 扩展 "AppCompatActivity" <<<<<
试试这个
Intent i = new Intent(tab_two_graph.this, Alert_main_page.class);
startActivity(i);
试试这个
Intent i = new Intent(((<YourActivityName>) getActivity()), AnotherPage.class);
startActivity(i);
只是为了向此处的答案添加更多信息。
您不必通过一个 Activity 来启动另一个 activity。您需要传递一个上下文,可以使用 tab_two_graph.this
访问该上下文。这就是以下工作的原因:
startActivity(new Intent(tab_two_graph.this, Alert_main_page.class));