آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل نمایش UI در استفاده از Thread (حل شد _لطفا برای روشی که استفاده شد نظر بدید)

Criss  12 سال پیش  12 سال پیش
+1 0

سلام دوستان

من توی کد زیر به 2 مشکل بر خوردم

G extends Application

ActivityEnhanced extends Actvity

ActivityStartup extends ActivityEnhanced

ActivitTwo extends ActivityEnhanced

 

 توی منیفست هم همرو تعریف کردم !

1. اینکه نمیتونم از G.CurrentActivity استفاده کنم !! و nullpointer میده !!!توی خط اول! خودمم گیج شدم که چرا !

  Intent intent = new Intent(G.currentactivity, ActivityTwo.class);
G.currentactivity.startActivity(intent);

2. اینکه من از ترد 2 ثانیه ایی برای برنامه استفاده کردم که بعد از این 2 ثانیه به اکتیویتی دوم بره اما توی این 2 ثانیه UI که برای اکتیویتی اول تعریف شده نمایش داده نمشه !!

 

  setContentView(R.layout.main);
Toast.makeText(G.context, "2000", Toast.LENGTH_LONG).show();
method();

}


public void method() {
try {

Thread.sleep(2000);
Intent intent = new Intent(ActivityStartup.this, ActivityTwo.class);
ActivityStartup.this.startActivity(intent);
}
catch (InterruptedException e) {
e.printStackTrace();
}
0 0
از handler استفاده کن (12 سال پیش)
+1 0
واسه قسمت دوم سوالت کد را بصورتی که داخل جواب نوشتم اصلاح کن درست میشه. قسمت اول هم بررسی میکنم (12 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
amir Alu  12 سال پیش
+1 0

باید داخل oncreate به صورت زیر بنویسی

 Handler handler = new Handler();
		handler.postDelayed(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				finish();
				startActivity(new Intent(ActivityStartup.this,ActivityTwo.class));
			}
		}, 3000);
0 0
مرسی _قسمت دوم حل شد _ اما چرا به کلاس جی ایراد میگیره ؟ (12 سال پیش)
0 0
کلاس G هم داخل منیفست تعریف شده؟ توی قسمت application!! (12 سال پیش)
0 0
اره دقیقا تعریف شده ! اتفاقا به G.context که برای Toast استفاده کردم گیر نمیده اما به G.CuurentActivity گیر میده ! (12 سال پیش)
0 0
کد کلاس g و کلاس enhanced activity قرار بده تا بررسی بشه (12 سال پیش)
پاسخ به سوال 
Criss  12 سال پیش
0 0

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.freestyler.my_test.criss"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
android:name=".G"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="ActivityStartup"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="ActivityTwo"
android:label="@string/app_name" >
</activity>
</application>

</manifest>

ActivityEnhanced

 package com.freestyler.my_test.criss;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;


public class ActivityEnhanced extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}


@Override
protected void onResume() {
super.onResume();
G.currentactivity = this;
}


@Override
protected void onDestroy() {
super.onDestroy();
Log.i("LOG", "Destroy From " + getClass().getSimpleName() + " Activity");
Toast.makeText(G.context, "GOOD-BYE", Toast.LENGTH_LONG).show();
}
}

 

G

 package com.freestyler.my_test.criss;

import android.app.Activity;
import android.app.Application;
import android.content.Context;


public class G extends Application {

public static Activity currentactivity;

public static Context context;


@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}

0 0
داخل منیفست این قسمتش اشتباه هست android:name="ActivityTwo" باید قبل activityTwo یک نقطه بزاری (12 سال پیش)
0 0
ولی من نقطه رو نمیزارم و وقتی از ActivityStartup.this بجای G.currentActivity استفاده میکنم جواب میده ! پس مشکل از این نیست (12 سال پیش)
پاسخ به سوال 
Criss  12 سال پیش
0 0

ایراد از اینجاست که اصلا منطقی نیست !

0 0
G.currentActivity را یه جا با حروف بزرگ نوشتی و داخل خود کلاس G بصورت G.currentactivity (12 سال پیش)
0 0
مشکل 100% از همین هست (12 سال پیش)
0 0
پشت اسم اکتیویتا هم هر دوتاشونو . گذاشتم باز هم مقدار null هست ! (12 سال پیش)
0 0
نه بعدا حروف رو تغییر دادم و کوچیک کردم _ این مورد اگر مشکل داشته باشه خود اکلیپس ایراد میگیره ! (12 سال پیش)
0 0
داخل کلاس g بصورت G.currentactivity نوشته شده ولی داخل کلاس activity اصلی شما بصورت G.CurrentActivity (12 سال پیش)
0 0
پروژه بخش 5 آموزشها را دانلود کن اسمش GSampel هست و با پروژه ی خودت مقایسه کن. یا اگر میخوای سورس پروژت رو بصورت کامل اینجا بزار تا دانلود کنم و تغیرات را داخلش بدم و واست بفرستم (12 سال پیش)
0 0
G.currentactivity رو توی ActivityEnhanced برای onCreate هم تعریف کردم مشکل حل شد _ مثل اینکه resume برنامه اجرا نمیشده ! _ نظر دوستان از تعریف اون توی onCreate چیه؟ مشکلی در آینده میتونه داشته باشه ؟ (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .