2017-07-17 2 views
0

ユーザがログインボタンをクリックすると自動的にナビゲーションドロワに移動するのではなく、エラーが発生しました。このエラーから私を助けてください。エラーナビゲーションドロワーの実装時に発生する

MainActivity.java

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.NavigationView; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.AdapterView; 
import android.widget.Toast; 


public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener, AdapterView.OnItemSelectedListener, AdapterView.OnItemClickListener { 


    private Toolbar toolbar; 
    private DrawerLayout drawer; 
    public String emailRegistration; 





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

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 


     //toolbar.setTitle("toolbar"); 
     setSupportActionBar(toolbar); 



     //Set adapter to AutoCompleteTextView 

     // FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 

//  if (!emailRegistration.matches("[a-zA-Z0-9._-][email protected][a-z]+.[a-z]+")) { 
// 
//   email.setError("Invalid Email Address"); 
// 
//  } 

//  fab.setOnClickListener(new View.OnClickListener() { 
//   @Override 
//   public void onClick(View v) { 
//    Snackbar.make(v, "Replace with your own action", Snackbar.LENGTH_LONG) 
//      .setAction("Action", null).show(); 
//   } 
//  }); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.addDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.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); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
     setTitle("Home"); 
      Intent i = new Intent(MainActivity.this, HomeFragment.class); 
      startActivity(i); 
     } else if (id == R.id.nav_gallery) { 
      setTitle("Edit Profile"); 
      EditFragment editFragment = new EditFragment(); 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.id.fragment,editFragment).commit(); 

     } else if (id == R.id.nav_slideshow) { 
      setTitle("Business"); 
      BusinessFragment businessFragment = new BusinessFragment(); 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.id.fragment,businessFragment).commit(); 

     } else if (id == R.id.nav_manage) { 
      setTitle("Message"); 
      MessageFragment messageFragment = new MessageFragment(); 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.id.fragment,messageFragment).commit(); 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
     // TODO Auto-generated method stub 
     //Log.d("AutocompleteContacts", "onItemSelected() position " + position); 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { 
     InputMethodManager imm = (InputMethodManager) getSystemService(
       INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 

    } 

    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
     // TODO Auto-generated method stub 

     // Show Alert 
     Toast.makeText(getBaseContext(), "Position:"+i+" Country:"+adapterView.getItemAtPosition(i), 
       Toast.LENGTH_LONG).show(); 

     Log.d("AutocompleteContacts", "Position:"+i+" Country:"+adapterView.getItemAtPosition(i)); 

    } 
} 

LoginActivity.java

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 



public class LoginActivity extends AppCompatActivity { 
    public EditText email, password; 
    public TextView textView; 
    public Button login; 


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

     email = (EditText) findViewById(R.id.email); 
//  if(email.getText().toString().length() == 0) 
//   email.setError("Email is required!"); 
     password = (EditText) findViewById(R.id.text_input_password_toggle); 
//  if(password.getText().toString().length() == 0) 
//   password.setError("Password is required!"); 
     textView = (TextView) findViewById(R.id.text2); 
     login = (Button) findViewById(R.id.login); 

     login.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
       startActivity(intent); 
      } 
     }); 

     textView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent i = new Intent(LoginActivity.this,signupactivity.class); 
       startActivity(i); 
      } 
     }); 
    } 



    } 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <include 
     layout="@layout/app_bar_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/activity_main_drawer" /> 

</android.support.v4.widget.DrawerLayout> 

エラー

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.DrawerLayout.addDrawerListener(android.support.v4.widget.DrawerLayout$DrawerListener)' on a null object reference 

SignupActivity。あなたのMainActivity.javaでJava

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 
import android.widget.Button; 
import android.widget.EditText; 

import java.util.ArrayList; 
import java.util.List; 


public class signupactivity extends AppCompatActivity { 
    public EditText firstname, lastname, email; 
    private AutoCompleteTextView actv; 
    public Button signup; 
    String[] languages={"Indore","Ujjain","Bhopal","Delhi","Bangalore","Chennai"}; 
    List<CharSequence> list = new ArrayList<CharSequence>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.content_main); 
     for (int i=0;i<20;i++){ 
      list.add("test " + i); // Add the item in the list 
     } 
     firstname = (EditText)findViewById(R.id.firstname); 
     lastname = (EditText)findViewById(R.id.lastname); 
     actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); 
     email = (EditText) findViewById(R.id.email); 
     signup = (Button)findViewById(R.id.signup); 
     ArrayAdapter adapter = new 
       ArrayAdapter(this,android.R.layout.simple_list_item_1,languages); 
     actv.setAdapter(adapter); 
     actv.setThreshold(1); 

     signup.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent i = new Intent(signupactivity.this, LoginActivity.class); 
       startActivity(i); 
      } 
     }); 
    } 

} 

画像I want the blank fragment when i click on the home, edit profile but its show everywhere signup activity because my content_main framelayout id is fragment and its call in mainactivity and its my signup page too (fragmentManager.beginTransaction().replace(R.id.fragment,editFragment).commit();) So how to solve this problem

+0

ねえ、 にsetContentView。 引き出しがactivity_main.xmlにあります 引き出しがヌルなので、ヌルオブジェクトにリスナーを追加することはできません。 – Anu

答えて

0

あなたは

setContentView(R.layout.fragment_business); 

を使用しているしかし、あなたの引き出しがactivity_main.xml

は、だからあなたの引き出しがnullであり、あなたがすることはできませんnullオブジェクトにリスナーを追加します。

変更するには、setContentView(R.layout.fragment_business)を使用しているあなたのMainActivity.javaで

setContentView(R.layout.activity_main); 
+0

ええ、その仕事は今、ありがたいですが、バックグラウンドで私のサインアップページを表示します。私は1つのsignupactivityも持っています。そこからサインアップページを削除する方法は?初めてのサインアップはログインをクリックするよりも、空白のナビゲーションドロワーページに入力するよりも便利です –

+0

コードを投稿して理解を深めることをお勧めします。私はそれがあなたが直面していることとあなたのために解決策を得るグーグルの問題だと思う。あなたがフラグメントを使用している場合あなたのフラグメントレイアウトに背景色を設定し、それは仕事をするでしょう。そうでなければ、フラグメントを置き換えることができます。 – Anu

+0

コードをアップロードし、画像がそれを確認しました –

関連する問題