2012-06-26 4 views
0

Мне было интересно, может ли кто-нибудь помочь мне. Может быть, хорошо иметь свежую пару глаз, чтобы рассказать мне, что я делаю неправильно, потому что я просто не могу ее найти. Наверное, это нечто тривиальное, но я не вижу его. У меня в основном есть кнопка, которая при нажатии вызывает настраиваемый диалог и просит пользователя сделать выбор между SD-картой или памятью устройства. Я чувствую, что все правильно, по большей части, это просто дает мне ошибку, аналогичную: OnClick ошибки на line71 ..Выпуск с диалоговыми окнами Intent Activities и Alert

Может кто-нибудь еще увидеть проблему ..

public class MediaActivity extends Activity 
{ 
    /** Called when the activity is first created. */ 

     AlertDialog.Builder builder; 
     AlertDialog alertDialog; 
     ImageButton sdImage; 
     ImageButton deviceImage; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button startApp = (Button) findViewById(R.id.startButton); 



     startApp.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) 
      { 
       Context mContext = MediaActivity.this; 
       LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); 
       View layout = inflater.inflate(R.layout.custlayout, (ViewGroup) findViewById(R.id.layout_root)); 

       TextView text = (TextView) layout.findViewById(R.id.text); 
       //text.setText("Upload an Image or Video"); 

       builder = new AlertDialog.Builder(mContext); 
       builder.setView(layout); 
       alertDialog = builder.create(); 

       sdImage= (ImageButton) findViewById(R.id.sdImageButton); 
       deviceImage = (ImageButton) findViewById(R.id.deviceImageButton); 


       sdImage.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View arg0) 
        { 
         // Write your code here to invoke YES event 
         Intent goToSD = new Intent(arg0.getContext(), 
          Sdcard.class); 
         startActivity(goToSD); 

        } 
       }); 

       deviceImage.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) 
        { 
         // TODO Auto-generated method stub 

        } 
       }); 

       // Showing Alert Message 

       alertDialog.show(); 


      } 
     }); 



    } 


} 

Благодаря кучу, я действительно ценю это потому, что у меня были проблемы с этим на некоторое время. Это, наверное, какая-то глупая ошибка, которую я пропускаю.

Еще раз спасибо!

ОБНОВЛЕНИЕ LogCat:

06-26 17: 54: 35,119 D/AndroidRuntime (24486): Выключение ВМ 06-26 17: 54: 35.119: Вт/dalvikvm (24486): ThreadId = 1 : выключение нити с неперехваченным исключением (группа = 0x40015560) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): FATAL EXCEPTION: main 06-26 17: 54: 35.119: E/AndroidRuntime (24486): java .lang.NullPointerException 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at my.edu.org.MediaActivity $ 1.onClick (MediaActivity.java:71) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at android.view.View.performClick (View.java:2485) 06-26 17: 54: 35.119: E/AndroidRunti me (24486): at android.view.View $ PerformClick.run (View.java:9080) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at android.os.Handler.handleCallback (Handler. java: 587) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at android.os.Handler.dispatchMessage (Handler.java:92) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at android.os.Looper.loop (Looper.java:130) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at android.app.ActivityThread.main (ActivityThread.java:3683) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at java.lang.reflect.Method.invokeNative (собственный метод) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): в java .lang.reflect.Method.invoke (Method.java:507) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.j ava: 850) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:608) 06-26 17: 54: 35.119: E/AndroidRuntime (24486): at dalvik.system.NativeStart.main (Native Method) ////////////////////// реализация onClick из предложений droider.

@Override 
    public void onClick(View v) 
    { 
     switch(v.getId()) 
     { 
     case R.id.sdImageButton: 
      Intent goToSD = new Intent(v.getContext(), 
        Sdcard.class); 
      startActivity(goToSD); 
      Toast.makeText(getApplicationContext(), "sdclicked", Toast.LENGTH_SHORT).show(); 
      break; 

     case R.id.deviceImageButton: 
      break; 

     default: 
      break; 
     } 


    } 
+0

Вы можете разместить весь LogCat? – Nerd

ответ

0

Отредактировано Ответ:

Вы должны инициализировать sdImage и deviceImage ImageButtons в OnCreate метод.

В настоящее время вы назначаете OnClickListener двум ImageButtons, которые находятся в нулевом состоянии.

Изменить это:

 @Override 
      public void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main); 
       Button startApp = (Button) findViewById(R.id.startButton 

    ); 

to this: 

@Override  
    public void onCreate(Bundle savedInstanceState)  
    {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.main);  
     Button startApp = (Button) findViewById(R.id.startButton); 
     sdImage= (ImageButton) findViewById(R.id.sdImageButton);  
     deviceImage = (ImageButton) findViewById(R.id.deviceImageButton);  
+0

Я попробую. Дайте мне минуту или две, и я отвечу. – Tastybrownies

+0

О, и если бы вы могли, не могли бы вы выделить, какая линия - 71 по очевидным причинам. – droider

+0

Конечно. Я должен был это сделать раньше. Вот строка 71: \t sdImage.setOnClickListener (новый OnClickListener() { – Tastybrownies

Смежные вопросы