点击图片按钮

时间:2016-07-25 14:53:45

标签: android android-fragments

我是android新手。我正在尝试创建一个应用程序,其中我在水平线上有三个imagebuttons,在下面部分有片段,可以通过点击按钮来更改(与tinder android app相同)。我尝试过使用两个不同的片段,一个有三个图像按钮,另一个有下面的一个。然后我也尝试将gridview用于图像,然后在下面的部分中进行分段。我也试过简单地使用图像和动态更改片段。我有不同的错误导致崩溃。我想知道的是如何以最有效的方式实现我的目标?

编辑:当我仅使用gridview的图片或imagebuttons的片段时,代码会关注。

package com.psycho.ayush.sahanubhooti_20;

import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;

public class MainActivity extends FragmentActivity {

    ImageButton ngosButton, profileButtton, donateButton;
    NGOsFragment ngosFragment;
    ProfileFragment profileFragment;
    DonateFragment donateFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ngosButton = (ImageButton)findViewById(R.id.ngoButton);
        profileButtton = (ImageButton)findViewById(R.id.profileButton);
        donateButton = (ImageButton)findViewById(R.id.donateButton);

        ngosButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction();
                fragTrans.add(R.id.fragment_container, ngosFragment);
                fragTrans.addToBackStack(null);
                fragTrans.commit();
            }
        });
    }

}

    <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/fragment_container"
    tools:context="com.psycho.ayush.sahanubhooti_20.MainActivity">


    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ngoButton"
        android:src="@drawable/ngo"
        android:background="@android:color/transparent" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/profileButton"
        android:layout_gravity="center_horizontal|top"
        android:src="@drawable/profile"
        android:background="@android:color/transparent" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/donateButton"
        android:layout_gravity="right|top"
        android:src="@drawable/donate"
        android:background="@android:color/transparent" />

</FrameLayout>

休息我有三个片段(NGOsFragment,DonateFragment和ProfileFragment),我没有改变。我没有在这里为其余按钮添加onclicklistener。

  07-25 21:18:09.111 23385-23407/com.psycho.ayush.sahanubhooti_20 I/OpenGLRenderer: Initialized EGL, version 1.4
07-25 21:18:09.111 23385-23407/com.psycho.ayush.sahanubhooti_20 W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
07-25 21:18:18.321 23385-23385/com.psycho.ayush.sahanubhooti_20 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                  Process: com.psycho.ayush.sahanubhooti_20, PID: 23385
                                                                                  java.lang.NullPointerException: Attempt to write to field 'android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager' on a null object reference
                                                                                      at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:418)
                                                                                      at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:408)
                                                                                      at com.psycho.ayush.sahanubhooti_20.MainActivity$1.onClick(MainActivity.java:30)
                                                                                      at android.view.View.performClick(View.java:4756)
                                                                                      at android.view.View$PerformClick.run(View.java:19761)
                                                                                      at android.os.Handler.handleCallback(Handler.java:739)
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                      at android.os.Looper.loop(Looper.java:135)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:5253)
                                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                                      at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

1 个答案:

答案 0 :(得分:0)

在所有按钮上设置单击侦听器,并设置以下代码以在帧布局上设置不同的片段。框架布局ID是您在活动中设置的框架布局的资源ID,而Fragment类是您创建的要在单击图像按钮时调用的片段。

 getSupportFragmentManager().beginTransaction().replace(R.id.frame layout id, Fragment class name).commit()