2016-05-15 65 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

謝謝!有用。 –

相關問題