-3

Android 개발에 익숙하지 않습니다. 내 활동에서 번들과 의도를 사용하여 다음 활동으로 일부 문자열을 전달하려고합니다. 여기인 텐트를 통해 번들을 통과 할 때 Android 앱이 다운 됨

package com.me.backtrack.backtrack; 

import android.content.Context; 
import android.content.Intent; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.text.InputType; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

import static android.R.attr.id; 
import static android.R.attr.name; 
import static android.R.id.edit; 
import static com.me.backtrack.backtrack.R.id.addTag; 

public class CreateTrackActivity extends AppCompatActivity { 

    private EditText trackNameView; 
    Fragment fr; 
    boolean count = false; 
    private EditText TagViewName; 

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

     trackNameView = (EditText) findViewById(R.id.trackName); 
     final LinearLayout tagLayout = (LinearLayout)findViewById(R.id.tagView); 

     final Button tagButton = (Button) findViewById(addTag); 
     tagButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (!count) { 
        Context c=CreateTrackActivity.this; 
        EditText tvv=new EditText(c); 
        tvv.setHint("Enter Tag"); 
        tvv.setId(R.id.Tag_1); 
        tvv.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS); 
        tagButton.setVisibility(View.GONE); 
        tagLayout.addView(tvv); 
        count = true; 
       } 
      } 
     }); 
     TagViewName = (EditText) findViewById(R.id.Tag_1); 
    } 

    public void onClickSave(View view) { 
     String name = trackNameView.getText().toString(); 
     FileManager.CreateTrackDir(name); //Creates track folders 
     String tagName = TagViewName.getText().toString(); 
     Intent intent = new Intent(this, CameraActivity.class); 

     //Bundle extras = intent.getExtras(); 
     Bundle bundle = new Bundle(); 
     bundle.putString("trackName", name); //pass through the folder name 
     bundle.putString("tagName", tagName); 
     intent.putExtra("bundle",bundle); 
     startActivity(intent); 
    } 
} 

가 있습니다 : 여기

05-20 15:42:27.137 15393-15393/com.me.backtrack.backtrack D/AndroidRuntime: Shutting down VM 
05-20 15:42:27.138 15393-15393/com.me.backtrack.backtrack E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.me.backtrack.backtrack, PID: 15393 
    java.lang.IllegalStateException: Could not execute method for android:onClick 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
     at android.view.View.performClick(View.java:5637) 
     at android.view.View$PerformClick.run(View.java:22429) 
     at android.os.Handler.handleCallback(Handler.java:751) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:154) 
     at android.app.ActivityThread.main(ActivityThread.java:6119) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
    Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Method.invoke(Native Method) 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
     at android.view.View.performClick(View.java:5637)  
     at android.view.View$PerformClick.run(View.java:22429)  
     at android.os.Handler.handleCallback(Handler.java:751)  
     at android.os.Handler.dispatchMessage(Handler.java:95)  
     at android.os.Looper.loop(Looper.java:154)  
     at android.app.ActivityThread.main(ActivityThread.java:6119)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
     at com.me.backtrack.backtrack.CreateTrackActivity.onClickSave(CreateTrackActivity.java:62) 
     at java.lang.reflect.Method.invoke(Native Method)  
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
     at android.view.View.performClick(View.java:5637)  
     at android.view.View$PerformClick.run(View.java:22429)  
     at android.os.Handler.handleCallback(Handler.java:751)  
     at android.os.Handler.dispatchMessage(Handler.java:95)  
     at android.os.Looper.loop(Looper.java:154)  
     at android.app.ActivityThread.main(ActivityThread.java:6119)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
05-20 15:42:27.142 1570-1843/system_process W/ActivityManager: Force finishing activity com.me.backtrack.backtrack/.CreateTrackActivity 
05-20 15:42:27.295 1292-1323/? D/AudioFlinger: mixer(0xb5b83c00) throttle end: throttle time(20) 
05-20 15:42:27.390 1276-1999/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer 
05-20 15:42:27.409 1276-1999/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer 
05-20 15:42:27.411 1570-3402/system_process I/OpenGLRenderer: Initialized EGL, version 1.4 
05-20 15:42:27.411 1570-3402/system_process D/OpenGLRenderer: Swap behavior 1 
05-20 15:42:27.423 1276-1999/? D/gralloc_ranchu: gralloc_alloc: format 1 and usage 0x900 imply creation of host color buffer 
05-20 15:42:27.567 1570-3402/system_process E/EGL_emulation: tid 3402: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH) 
05-20 15:42:27.572 1570-3402/system_process W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9377b160, error=EGL_BAD_MATCH 
05-20 15:42:27.666 1570-1586/system_process W/ActivityManager: Activity pause timeout for ActivityRecord{f964620 u0 com.me.backtrack.backtrack/.CreateTrackActivity t104 f} 
05-20 15:42:27.984 2514-16105/com.google.android.gms I/iu.UploadsManager: End new media; added: 0, uploading: 0, time: 215 ms 

가 시작 활동 :

FATAL EXCEPTION: main

버튼을 누를되는 로그 캣 : 그러나 어떤 이유로 응용 프로그램 충돌 및 오류가 발생합니다 두 번째 활동을위한 onCreate 부분 :

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

    textureView = (TextureView) findViewById(R.id.camera_preview); 
    assert textureView != null; 
    textureView.setSurfaceTextureListener(textureListener); 

    Bundle bundle = getIntent().getBundleExtra("bundle"); 
    nameOfTrack = bundle.getString("trackName"); 
    tagName = bundle.getString("tagName"); 
    //nameOfTrack = getIntent().getExtras().getString("trackName"); 
    //nameOfTrack = extras.getString("trackName"); 
    //tagName = extras.getString("tagName"); 
} 

이 활동은 450 줄의 코드와 비슷하므로 문제를 알기에 충분합니다. 그러나 나머지 코드를 추가하기를 원한다면 알려주십시오. 나는 다른 StackOverflow 대답을 사용하여 시도했지만 그들 중 아무도 나를 위해 어떤 이유로 작동하지 않는 것 같습니다. 의도가 잘못되어 있니? 미리 감사드립니다.

+0

어느'TagViewName' 또는'trackNameView'은'null', 고해상도/레이아웃/activity_create_track.xml' 그 위젯 중 하나가없는'때문이다. – CommonsWare

+0

인 텐트가 문제가되지 않습니다. 보기 stacktrace에 언급 된 줄 번호 null이 –

답변

0

문제는 TagViewName이 Null입니다. 다음은 첫 번째 ID로 찾을 문제

보시다시피
final Button tagButton = (Button) findViewById(addTag); 
    tagButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!count) { 
       Context c=CreateTrackActivity.this; 
       EditText tvv=new EditText(c); 
       tvv.setHint("Enter Tag"); 
       tvv.setId(R.id.Tag_1); 
       tvv.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS); 
       tagButton.setVisibility(View.GONE); 
       tagLayout.addView(tvv); 
       count = true; 
      } 
     } 

    }); 
    TagViewName = (EditText) findViewById(R.id.Tag_1); 

입니다. 처음에는 존재하지 않는 ID입니다. 나중에 레이아웃을 추가하고 ID를 설정합니다.

해결 방법이 될 수 있습니다

public void onClickSave(View view) { 
    String name = trackNameView.getText().toString(); 
    FileManager.CreateTrackDir(name); //Creates track folders 
    TagViewName = (EditText) findViewById(R.id.Tag_1); 
    String tagName = TagViewName.getText().toString(); 
    Intent intent = new Intent(this, CameraActivity.class); 
+0

해결 방법을 제공해 주셔서 감사합니다. 문제가 해결되었습니다. –