Код: Выделить всё
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:visibility="visible"
android:layout_width="match_parent"
android:layout_height="11dp"
android:layout_gravity="center_horizontal"
android:background="@color/colorProgressBar" />
вот этот таймер сделал через AsyncTask (в который еще передается сколько секунд ему тикать). Ради теста класс сделал прям в активити.
Код: Выделить всё
public class SessionTimer extends AsyncTask<Integer,Integer,Integer>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Integer doInBackground(Integer... params) {
int i;
for(i=params[0];i!=0;i--)
{
publishProgress(i);
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return i;
}
@Override
protected void onProgressUpdate(Integer... values) {
Toast.makeText(getApplicationContext(),"SEC: "+values[0], Toast.LENGTH_SHORT).show();
//keyboard.SetProgress(values[0]);
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
}
@Override
protected void onCancelled() {
super.onCancelled();
}
}
Код: Выделить всё
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.train_activity);
setUI();
SessionTimer sessionTimer = new SessionTimer();
keyboard.SetMax(7);
sessionTimer.execute(7);
}
public void setUI()
{
Toast.makeText(this,"ShowTrain", LENGTH_SHORT).show();
mathjax = new MathJaxFragment();
keyboard = new KeyboardFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.train_fragment_one, mathjax);
fragmentTransaction.add(R.id.train_fragment_two, keyboard);
//fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
при попытке что-то изменить в прогресс-баре фрагмента из активити - NullPointException.
Пробовал во фрагменте сделать открытые методы
Код: Выделить всё
public class KeyboardFragment extends android.support.v4.app.Fragment {
ProgressBar progressBar;
public void SetProgress(int i)
{
progressBar.setProgress(i);
}
public void SetMax(int i)
{
progressBar.setMax(i);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.keyboard_fragment,container,false);
progressBar = (ProgressBar) v.findViewById(R.id.progressBar);
progressBar.setVisibility(ProgressBar.VISIBLE);
progressBar.setMax(10);
return v;
}
}
в активити через
Код: Выделить всё
progressBar = (ProgressBar) keyboard.getView().findViewById(R.id.progressBar);
в чем проблема? собственно, понятно что проблема в том что View этого нет когда в активити пытаюсь вызвать методы прогресс бара (наверно), а почему его нет? и как это можно решить?