如何在TabHost中调用Activity?

时间:2017-01-25 07:44:47

标签: android android-fragments android-tabhost fragment-tab-host

我有一个片段,在片段中我有一个可以调用另一个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);
        }
    });

  }

但它只会引发错误。

4 个答案:

答案 0 :(得分:1)

您需要使用当前活动调用它,而不是您的视图。所以你可以使用:

来调用它
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);
        }
    });

请阅读Starting Another Activity

答案 1 :(得分:1)

公共类tab_two_graph扩展“AppCompatActivity”<<<<<<

试试这个

Intent i = new Intent(tab_two_graph.this, Alert_main_page.class);
            startActivity(i);

答案 2 :(得分:1)

试试这个

Intent i = new Intent(((<YourActivityName>) getActivity()), AnotherPage.class);
            startActivity(i);

答案 3 :(得分:1)

只是在这里为答案添加更多信息。

您无需传递活动即可开始其他活动。您需要传递一个上下文,可以使用tab_two_graph.this访问该上下文。这就是为什么以下工作:

startActivity(new Intent(tab_two_graph.this, Alert_main_page.class));