2016-05-15 41 views
-2

我一直在寻找这个,但我还没有找到任何可以帮助我的东西。 我有一个主要的活动与2个片段,我用我的工具栏中的选项卡。有没有可能将ImageButton从我的MainActivity中的片段连接到另一个Activity。我知道如何通过imagebuttom将Activity连接到Activity,我只是不知道如何通过Fragment-> Activity来完成它。谢谢。片段上的ImageButton将转到另一个活动。 Android Studio

我在片段上有一个图像按钮,当我按下ImageButton时我想打开一个活动。

public class Movies extends Fragment { 


    public Movies() { 
     // Required empty public constructor 
    } 
    ImageButton imageButton2; 



    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_movies, container, false); 
     imageButton2 = (ImageButton) findViewById(R.id.imageButton2); 

     imageButton2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intentLoadNewActivity = new Intent(Movies.this, Activity_Civil_War.class); 
       startActivity(intentLoadNewActivity); 
      } 
     }); 

    } 

} 

我收到很多错误。我也尝试在MainActivity中做这件事,但我得到空对象异常。

MainActivity类别:

public class MainActivity extends AppCompatActivity { 
    Toolbar toolbar; 
    TabLayout tabLayout; 
    ViewPager viewPager; 
    view_pager_adapter viewPagerAdapter; 
    ImageButton imageButton2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toolbar=(Toolbar)findViewById((R.id.toolBar)); 





     tabLayout=(TabLayout)findViewById((R.id.tabLayout)); 
     viewPager=(ViewPager)findViewById((R.id.ViewPager)); 
     viewPagerAdapter = new view_pager_adapter(getSupportFragmentManager()); 
     viewPagerAdapter.addFragments(new Showcase(),"Showcase"); 
     viewPagerAdapter.addFragments(new Movies(),"Movie List"); 
     viewPagerAdapter.addFragments(new Menu(),"Menu"); 
     viewPagerAdapter.addFragments(new Login(),"Login"); 

     viewPager.setAdapter(viewPagerAdapter); 
     tabLayout.setupWithViewPager(viewPager); 


    } 
} 
+0

能告诉你,你已经完成的工作是什么?来自你的片段的代码。而且要更精确地说明你想实现的目标,你是否想从片段中启动新的活动? – Gauthier

+0

我用我的代码编辑。是的,我想从我的片段中启动一个新的活动。 –

回答

1

几件事情第一:

return inflater.inflate(R.layout.fragment_movies, container, false); 

如果您这里的值,它下面的代码的其余部分将不会被调用。你需要做的是保留对它的引用,并在方法结束时返回它。

然后

Intent intentLoadNewActivity = new Intent(Movies.this, Activity_Civil_War.class); 

我认为电影是一个片段和Activity_Civil_War是一种活动(纠正我,如果我错了)。

Intent类中没有将Fragment作为参数的构造函数。通过调用'this'你试图做的是得到一个Context。在一个片段,你可以通过调用getActivity()

这样做。如果我们总结的东西了,我们得到:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_movies, container, false); 
    imageButton2 = (ImageButton) findViewById(R.id.imageButton2); 

    imageButton2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intentLoadNewActivity = new Intent(getActivity(), Activity_Civil_War.class); 
      startActivity(intentLoadNewActivity); 
     } 
    }); 
    return view; 
} 
+0

谢谢!有用。 –

相关问题