我想将MainActivity转移到其他Activity(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
我很困惑。 我不知道问题是什么 请帮助我。谢谢
答案 0 :(得分:0)
这可能是您Intent
的问题。
请在您的torkyActivity
中添加AndroidManifest.xml
<activity android:name="com.example.barname_asli.torkyActivity"/>
当您想要为新活动制作新活动或Intent
时,您应该在上面的AndroidManifest.xml中注册它。
如ρяσѕρєя所评论,在ahang=getResources().getIntArray(R.array.ahang_torky);
的{{1}}内移动onCreate
。
当您尝试在尝试执行此操作的方法之外执行代码时,您可能会看到此错误:
Activity
所以请这样做:
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
内进行。
如果尝试上述解决方案不起作用,请参阅java.lang.RuntimeException: Unable to instantiate activity ComponentInfo