2014-09-06 27 views
-4

我想在MainActivity到其他活動(torkyActivity)移動.. MainActivity有tabHost和tabspce之一是torkyActivity ...有意向的其他活動的活動?

當我運行的應用程序,它是erorrs。 這是我的類代碼:(torkyActivity)

public class torkyActivity extends Activity { 
    int []ahang=getResources().getIntArray(R.array.ahang_torky); 
    String [] name={"ahang1","ahang2","ahang3","ahang4","ahang5","ahang6","ahang7","ahang8","ahang9" 
      ,"ahang10","ahang11","ahang12","ahang13"}; 
    String baseDir=Environment.getExternalStorageDirectory().getAbsolutePath(); 
    String fileName="file"; 
    SeekBar seekBar; 
    boolean okPlay=false; 
    MediaPlayer mp; 
    File barname=new File(Environment.getExternalStorageDirectory(),fileName); 


    @Override 


    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_listview); 
     ListView list=(ListView) findViewById(R.id.listView1); 
     Myadapter adapter=new Myadapter(getApplicationContext()); 
     seekBar=(SeekBar)findViewById(R.id.seekBar1); 
     list.setAdapter(adapter); 

    } 

    public class Myadapter extends BaseAdapter implements Runnable 
    { 
     LayoutInflater myInflater; 
     public Myadapter(Context context) { 
      myInflater=LayoutInflater.from(context); 
      // TODO Auto-generated constructor stub 
     } 



     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return name.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 


     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      ViewHolder Holder; 

      if(convertView==null) 
      { 
       Holder=new ViewHolder(); 
       convertView=myInflater.inflate(R.layout.item_layout, null); 
       Holder.name=(TextView)convertView.findViewById(R.id.text_name); 
       Holder.play=(ImageView)convertView.findViewById(R.id.Imag_play); 
       Holder.send=(ImageView)convertView.findViewById(R.id.imag_send); 
       Holder.ring=(ImageView)convertView.findViewById(R.id.imag_ring); 
       Holder.name.setText(name[position]); 
       copy(ahang[position],name[position]); 


       //*************bakhshe play kardan 


       Holder.play.setOnClickListener(new OnClickListener() { 

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


//****************in ghesmat moshkel dare************************************** 



    //*****************************************************************************s 
       if(okPlay==true) 
        { 
        mp.stop(); 
        play(ahang [position]); 
        } 
       else 
        play(ahang[position]); 




       } 


      }); 
       Holder.send.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
       // blutooth(name[position]); 





       } 
      }); 
       Holder.ring.setOnClickListener(new OnClickListener() { 

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

        ringTone(name [position]); 
        Toast.makeText(getBaseContext(), "set shod", Toast.LENGTH_LONG).show(); 


       } 
      }); 
       convertView.setTag(Holder); 




      } 
      else 
       Holder=(ViewHolder) convertView.getTag(); 



      // TODO Auto-generated method stub 
      return convertView; 
     } 

    public void run() { 
      int currentPosition= 0; 
      int total = mp.getDuration(); 
      while (mp!=null && currentPosition<total) { 
       try { 
        Thread.sleep(1000); 
        currentPosition= mp.getCurrentPosition(); 
       } catch (InterruptedException e) { 
        return; 
       } catch (Exception e) { 
        return; 
       }    
       seekBar.setProgress(currentPosition); 
      } 
     } 
    protected void play(int ahang) { 

     okPlay=true; 


      mp=MediaPlayer.create(getApplicationContext(), ahang); 
      mp.start();      
      seekBar.setProgress(0); 
      seekBar.setMax(mp.getDuration()); 
      new Thread(this).start(); 




      // TODO Auto-generated method stub 

     } 
} 




    @Override 
     protected void onDestroy() { 
      // TODO Auto-generated method stub 
      super.onDestroy(); 
      mp.stop(); 
     } 





    //************************************************************ 
    public void copy(int ahang,String name) { 

     barname.mkdir(); 

     File trakc=new File(Environment.getExternalStorageDirectory(),fileName + "/"+ name+".mp3"); 

    InputStream f1=getResources().openRawResource(ahang); 
    FileOutputStream f2; 
    try { 
     f2=new FileOutputStream(trakc); 
     byte[] buffer=new byte[1024*500]; 
     int i; 
     i=f1.read(buffer); 
     while (i !=-1) { 
     f2.write(buffer); 
     i=f1.read(buffer); 

     } 
     f2.flush(); 
     f2.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 



} 
public void blutooth(String name) 
{ 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_SEND); 
    intent.setType("audio/*"); 
    File trakc=new File(Environment.getExternalStorageDirectory(),fileName + "/"+ name+".mp3"); 
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(trakc)); 
    startActivity(intent); 
} 
public void ringTone(String name) 
{ 
    File trakc=new File(Environment.getExternalStorageDirectory(),fileName + "/"+ name+".mp3"); 
    ContentValues values = new ContentValues(); 
    values.put(MediaStore.MediaColumns.DATA, trakc .getAbsolutePath()); 
    values.put(MediaStore.MediaColumns.TITLE, "Gitar"); 
    values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); 
    values.put(MediaStore.Audio.Media.ARTIST, "ahmadi"); 
    // values.put(MediaStore.MediaColumns.SIZE, 215454); 
    values.put(MediaStore.Audio.Media.IS_RINGTONE, true); 
    values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false); 
    values.put(MediaStore.Audio.Media.IS_ALARM, false); 
    values.put(MediaStore.Audio.Media.IS_MUSIC, false); 



    Uri uri = MediaStore.Audio.Media.getContentUriForPath(trakc 
      .getAbsolutePath()); 
    getContentResolver().delete(
      uri, 
      MediaStore.MediaColumns.DATA + "=\"" 
        + trakc .getAbsolutePath() + "\"", null); 
    Uri newUri = getContentResolver().insert(uri, values); 

    RingtoneManager.setActualDefaultRingtoneUri(
      torkyActivity.this, RingtoneManager.TYPE_NOTIFICATION, 
      newUri); 

} 
public class ViewHolder extends Activity 
{ 
    TextView name; 
    ImageView play; 
    ImageView send; 
    ImageView ring; 
} 
} 

和我的logcat是:

09-08 19:34:03.550: D/AndroidRuntime(13917): Shutting down VM 
    09-08 19:34:03.550: W/dalvikvm(13917): threadid=1: thread exiting with uncaught exception (group=0x40aa8210) 
09-08 19:34:03.550: E/AndroidRuntime(13917): FATAL EXCEPTION: main 
09-08 19:34:03.550: E/AndroidRuntime(13917): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.barname_asli/com.example.barname_asli.MainActivity}: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.barname_asli/com.example.barname_asli.torkyActivity}: java.lang.NullPointerException 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.os.Looper.loop(Looper.java:137) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.ActivityThread.main(ActivityThread.java:4448) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at java.lang.reflect.Method.invokeNative(Native Method) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at java.lang.reflect.Method.invoke(Method.java:511) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at dalvik.system.NativeStart.main(Native Method) 
09-08 19:34:03.550: E/AndroidRuntime(13917): Caused by: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.barname_asli/com.example.barname_asli.torkyActivity}: java.lang.NullPointerException 
    09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891) 
    09-08 19:34:03.550: E/AndroidRuntime(13917):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:1808) 
    09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135) 
    09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347) 
    09-08 19:34:03.550: E/AndroidRuntime(13917): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:737) 
    09-08 19:34:03.550: E/AndroidRuntime(13917): at android.widget.TabHost.setCurrentTab(TabHost.java:401) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.widget.TabHost.addTab(TabHost.java:240) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at com.example.barname_asli.MainActivity.onCreate(MainActivity.java:48) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.Activity.performCreate(Activity.java:4465) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
    09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 
    09-08 19:34:03.550: E/AndroidRuntime(13917): ... 11 more 
    09-08 19:34:03.550: E/AndroidRuntime(13917): Caused by: java.lang.NullPointerException 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.content.ContextWrapper.getResources(ContextWrapper.java:81) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at com.example.barname_asli.torkyActivity.<init>(torkyActivity.java:33) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at java.lang.Class.newInstanceImpl(Native Method) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at java.lang.Class.newInstance(Class.java:1319) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at  android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
09-08 19:34:03.550: E/AndroidRuntime(13917): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882) 
09-08 19:34:03.550: E/AndroidRuntime(13917): ... 21 more 

我很困惑。 我不知道問題是什麼 請幫我。謝謝

+1

移動'ahang = getResources()getIntArray(R.array.ahang_torky);'在活動 – 2014-09-06 15:21:47

回答

0

這可能是你的問題Intent

請將您torkyActivityAndroidManifest.xml這樣

<activity android:name="com.example.barname_asli.torkyActivity"/> 

當你想一個新的活動或進行Intent到一個新的活動,你應該在你的AndroidManifest.xml像上面註冊。

而且作爲評論ρяσѕρєя,移動ahang=getResources().getIntArray(R.array.ahang_torky);裏面onCreateActivity

File barname=new File(Environment.getExternalStorageDirectory(),fileName); 
public void copy(int ahang,String name) { 

    barname.mkdir(); 
    ........ 
} 

所以,與其這樣做::

public void copy(int ahang,String name) { 
    File barname=new File(Environment.getExternalStorageDirectory(),fileName); 
    barname.mkdir(); 
    ........ 
} 

更多信息

此外,當你嘗試的方法外運行就像試圖做到這一點的代碼,你可能會看到這個錯誤

此外,我認爲你從未在你的活動中的任何地方使用過baseDir。那麼爲什麼這條線

String baseDir=Environment.getExternalStorageDirectory().getAbsolutePath();

,只是一個快速的音符,你永遠不應該onCreate。使他們只裏面才onCreate對您的看法引用。

如果在嘗試上述解決方案沒有工作給你參考java.lang.RuntimeException: Unable to instantiate activity ComponentInfo

+0

的的onCreate實際的問題是由什麼引起的ρяσѕρєя K在對原始問題的評論中暗示。你不能在'Activity'的主體中調用'getResources()',也就是在它被正確創建之前。這只是OP問題的開始 - 其他代碼在很多不同的地方被破解。 – Squonk 2014-09-06 16:27:55

+0

你是對的。編輯我的答案。添加此行_And作爲評論ρяσѕρєя,移動ahang = getResources()。getIntArray(R.array.ahang_torky);在Activity的內部創建 – 2014-09-06 16:38:29