xml布局加载但我的活动没有响应按钮点击

时间:2015-08-13 14:34:00

标签: android android-fragments android-activity actionlistener android-fragmentactivity

我是新手,但我已经制作了一个同样方式的小应用程序。 我无法看到我做错了什么,因为代码看起来很安静,就像我之前的应用程序一样。

当我运行它或调试我的应用程序时,它会在我的模拟器上显示我的布局,因此它会加载必须加载的页面,但它完全可以,它不会听取按钮点击。我也没有给我任何错误。

这是我的fragment_main.xml

的XML代码
    <RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity$PlaceholderFragment">

 <TextView
        android:text="Eventaris"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:textSize="100px"
        android:textStyle="bold"
        android:id="@+id/lblEventaris"
        />

    <LinearLayout
        android:layout_width="500px"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:orientation="vertical"
        android:id="@+id/login">


     <EditText
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:hint="Gebruikersnaam"
         android:id="@+id/txtGebruikersnaam"/>

     <EditText
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:hint="Wachtwoord"
         android:inputType="textPassword"
         android:layout_below="@id/txtGebruikersnaam"
         android:id="@+id/txtWachtwoord"/>

     <Button
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="Inloggen"
         android:id="@+id/btnInloggen"
         android:layout_below="@id/txtWachtwoord"/>

    </LinearLayout>

     <RelativeLayout
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:gravity="center"
         android:layout_below="@id/login">

     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="nog geen account?"
         android:gravity="center"
         android:id="@+id/lblRegistratie"/>

      <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Registeren"
          android:id="@+id/btnRegistreren"
          android:layout_below="@id/lblRegistratie"/>
         </RelativeLayout>

</RelativeLayout>

这是我的主要活动MainFragment.Java

    package com.example.arno.eventaris;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;

import java.sql.SQLException;

/**
 * Created by Arno on 28/04/2015.
 */
public class MainFragment extends Fragment {

    private OnMainFragmentInteractionListener mListener;
    private View view;

    public MainFragment()
    {
        //required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        view=inflater.inflate(R.layout.fragment_main, container, false);
        Button btnInloggen = (Button) view.findViewById(R.id.btnInloggen);
        btnInloggen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    inloggen();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        });
        Button btnRegistreren = (Button) view.findViewById(R.id.btnRegistreren);
        btnRegistreren.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){
                navigeerRegistratie();
            }
        });
        return view;
    }

    @Override
    public void onAttach(Activity activity)
    {
        super.onAttach(activity);
        try{
            mListener = (OnMainFragmentInteractionListener) activity;

        }
        catch (ClassCastException e)
        {
            throw new ClassCastException(activity.toString() + "must implement OnFragmentInteractionListener");
        }
    }

    public void inloggen() throws SQLException {
        EditText gebr=(EditText) view.findViewById(R.id.txtGebruikersnaam);
        EditText wachtw=(EditText) view.findViewById(R.id.txtWachtwoord);
        String gebruiker = gebr.getText().toString();
        String wachtwoord = wachtw.getText().toString();

        mListener.login(gebruiker, wachtwoord);
    }

    public void navigeerRegistratie()
    {
        mListener.navigeerRegistratie();
    }

    @Override
    public void onDetach()
    {
        super.onDetach();
        mListener = null;
    }

    public interface OnMainFragmentInteractionListener {
        //Todo: Update argument type and name
        public void login(String gebruiker, String wachtwoord) throws SQLException;
        public void navigeerRegistratie();
    }



}

这是我的主要活动MainActivity.java

package com.example.arno.eventaris;

import android.app.DialogFragment;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.LinearLayout;
import android.widget.Toast;

import com.example.arno.eventaris.Database.DBAdapter;

import java.sql.SQLException;


public class MainActivity extends ActionBarActivity implements MainFragment.OnMainFragmentInteractionListener,RegistratieFragment.OnRegistratieFragmentInteractionListener{

    private Cursor gebruikerCursor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void login(String gebruiker, String wachtwoord) throws SQLException {
        DBAdapter db = new DBAdapter(this);

        db.open();

        gebruikerCursor = db.getGebruiker(gebruiker);
        if(gebruikerCursor.moveToFirst()) {
            gebruikerCursor.moveToFirst();
            String wwControle = gebruikerCursor.getString(gebruikerCursor.getColumnIndex("wachtwoord"));

            if (wachtwoord.equals(wwControle)) {

                HomeFragment fragment = new HomeFragment();
                Bundle bundle = new Bundle();
                bundle.putString("gebruikersnaam", gebruiker);
                fragment.setArguments(bundle);
                getFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
            } else {
                DialogFragment errorlogin = new ErrorLogin();
                errorlogin.show(getFragmentManager(), "Wachtwoord incorrect!");
            }
        }
        else
        {
            DialogFragment errorlogin = new ErrorLogin();
            errorlogin.show(getFragmentManager(), "Gebruikersnaam incorrect!");
        }
        db.close();
    }

    @Override
    public void navigeerRegistratie() {
        getFragmentManager().beginTransaction().replace(R.id.container, new RegistratieFragment()).commit();
    }

    @Override
    public void registreren(String gebruiker, String voornaam, String naam, String email, String wachtwoord, String herhaalWachtwoord) {
        if(wachtwoord.equals(herhaalWachtwoord)) {
            DBAdapter db = new DBAdapter(this);

            db.open();
            long id = db.insertGebruiker(gebruiker, voornaam, naam, email, wachtwoord);
            getFragmentManager().beginTransaction().replace(R.id.container, new MainFragment()).commit();
        }
        else
        {
            DialogFragment errorregistratie = new ErrorRegistratie();
            errorregistratie.show(getFragmentManager(), "Wachtwoorden komen niet overeen!");
        }
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }
}

最后这里是我的activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container"
    android:layout_width="match_parent" android:layout_height="match_parent"
    tools:context=".MainActivity" tools:ignore="MergeRootFrame" />

提前致谢!

1 个答案:

答案 0 :(得分:0)

通过使用相同代码创建一个新项目来修复它,必须比我的代码更深入。