2016-11-30 4 views
2

Я хочу передать контекст основной деятельности другому классу, чтобы создать тост.Как передать контекст?

Моей основной деятельностью называется класс, который удалит файл. Класс, который удаляет файлы, вызовет тост, если файл не существует.

Вот мой код:

public class MyActivity extends AppCompatActivity 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
    // create a file 

    Button buttoncreate = (Button)findViewById(R.id.create_button); 

    Button buttondelete = (Button)findViewById(R.id.delete_button); 
    ... 

    buttondelete.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      new DeleteFile(); 
     } 
    }); 
} 

public class DeleteFile extends AsyncTask { 

@Override 
public Object doInBackground(Object[] params) { 
    File root = android.os.Environment.getExternalStorageDirectory(); 
    File dir = new File(root.getAbsolutePath() + "/mydir"); 
    if (!(dir.exists())) { 
     CharSequence text = "Files do not exist!"; 
     int duration = Toast.LENGTH_SHORT; 
     Toast toast = Toast.makeText(getApplicationContext(), text, duration); 
     toast.show(); 

    } else { 
     File file; 
     file = new File(dir, "mydata.bmp"); 
     file.delete(); 
    } 
    return(1); 
} 

} 
+0

, что я использую doinbackgroud ... как я могу передать значение при создании класса? –

+1

не уверен, почему кто-то проголосовал за ваш вопрос. Но я уверен, что они намного умнее всех нас. Я восполнил это. – eric

ответ

4

Первое, что вам нужно статическую переменную объявить глобальную переменную в Application Class,
как этот

class GlobalClass extends Application { 

    public static Context context; 

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

    } 

секунду вам нужно установить этот класс в AndroidManifest.xml внутри тега приложения
вот так:

<application 
    android:name=".GlobalClass" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Black.NoTitleBar" > 

то везде, где вам нужно, чтобы получить доступ к этой информации, получить объект Application по:

Toast toast = Toast.makeText(GlobalClass.context, text, duration); 
    toast.show(); 
+5

Рад видеть, что кто-то действительно помогает ОП, а не быть грубым. – cuoka

+0

Я знаю, правильно?!? – eric

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