У меня есть проблема, которую я не могу решить. У меня есть панель навигации, которая настроена как фрагменты. Я прикреплю код для "R.id.nav_kontakt", так как здесь ошибка. Как я понимаю, для кнопки контакт есть исключение nullpointerexception, но когда я читаю код, я должен быть внутри фрагмента в тот момент, когда я вызываю код кнопки, и поэтому кнопка не должна быть нулевой. Очевидно, что я не прав, поэтому я был бы признателен, если бы вы могли сказать мне, как исправить эту ошибку, и, возможно, даже научить меня, как избежать этого в будущем.
public void sendMail() {
//String recipientList = kontaktTekst.getText().toString();
//String[] recipients = recipientList.split(",");
String message = kontaktTekst.getText().toString();
Intent intent = new Intent( Intent.ACTION_SEND );
intent.putExtra( Intent.EXTRA_EMAIL, new String[]{"xxx.com"} );
intent.putExtra( Intent.EXTRA_SUBJECT, "xxx" );
intent.putExtra( Intent.EXTRA_TEXT, message );
intent.setType( "message/rfc822" );
startActivity( Intent.createChooser( intent, "Vælg en email klient" ) );
intent.setData( Uri.parse( "mailto:" ) );
}
@RequiresApi(api = Build.VERSION_CODES.M)
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.nav_kontakt) {
Toast.makeText( this, "Kontakt os her", Toast.LENGTH_SHORT ).show();
android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace( R.id.flMain, new KontaktFragment() );
ft.commit();
kontaktTekst = (EditText) findViewById( R.id.kontaktEdit );
kontaktSend = (Button) findViewById( R.id.kontaktButton );
kontaktSend.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
sendMail();
}
} );
}
}
DrawerLayout drawer = (DrawerLayout) findViewById( R.id.drawer_layout );
drawer.closeDrawer( GravityCompat.START );
return true;
}
Исключение составляют следующие:
09-10 16:07:57.729 30571-30571/com.example.yusuf.cxweb E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.yusuf.cxweb, PID: 30571
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.app.Fragment.getView()' on a null object reference
at com.example.yusuf.cxweb.MainActivity.onNavigationItemSelected(MainActivity.java:727)
at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:154)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
at android.support.v7.view.menu.SubMenuBuilder.dispatchMenuItemSelected(SubMenuBuilder.java:89)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
at android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:342)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Цените все усилия, чтобы помочь мне!
** ОБНОВЛЕНИЕ **
Я прилагаю фрагмент кода здесь
package com.example.yusuf.cxweb;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* A simple {@link Fragment} subclass.
*/
public class KontaktFragment extends Fragment {
public KontaktFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_kontakt, container, false);
}
}