1

I am creating an app that uses material-intro slide for user guide and pops up when the app starts, but i am unable to transit from the Slide to my activity_main layout.Even the screen appears blank when setContentView is used.

protected void onCreate(Bundle savedInstanceState) {

    setFullscreen(true);
    super.onCreate(savedInstanceState);

    addSlide(new SimpleSlide.Builder()
            .title(R.string.title)
            .description(R.string.description)
            .image(R.mipmap.icon)
            .background(R.color.background)
            .backgroundDark(R.color.background_dark)
            .build());

    setContentView(R.layout.activity_main);
}

The github link to the dependencies

MainActivity code

public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";

private TaskDbHelper mHelper;
private ListView mTaskListView;
private ArrayAdapter<String> mAdapter;


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

    /*SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

      if(!prefs.getBoolean("new1",false)){

        //Only 1st time run code here

        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean("new1", true);
        editor.commit();
     }*/

    setContentView(R.layout.activity_main);
    mHelper = new TaskDbHelper(this);
    mTaskListView = (ListView) findViewById(R.id.list_todo);
    updateUI();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return super.onCreateOptionsMenu(menu);
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_add_task:

        final EditText taskEditText = new EditText(this);
        AlertDialog dialog = new AlertDialog.Builder(this)
                .setTitle("Add new task")
               // .setMessage("What do you want to do next?")
                .setView(taskEditText)
                .setPositiveButton("Add", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String task = String.valueOf(taskEditText.getText());
                        if(task != null && !task.isEmpty()) {
                            SQLiteDatabase db = mHelper.getWritableDatabase();
                            ContentValues values = new ContentValues();
                            values.put(TaskContract.TaskEntry.COL_TASK_TITLE, task);
                            db.insertWithOnConflict(TaskContract.TaskEntry.TABLE,
                                    null,
                                    values,
                                    SQLiteDatabase.CONFLICT_REPLACE);
                            updateUI();
                            db.close();
                        } else {

                        }
                    }
                })
                .setNegativeButton("Cancel", null)
                .create();
        dialog.show();

        default:
            return super.onOptionsItemSelected(item);
    }
}

private void updateUI() {
    ArrayList<String> taskList = new ArrayList<>();
    SQLiteDatabase db = mHelper.getReadableDatabase();
    Cursor cursor = db.query(TaskContract.TaskEntry.TABLE,
            new String[]{TaskContract.TaskEntry._ID, TaskContract.TaskEntry.COL_TASK_TITLE},
            null, null, null, null, null);
    while (cursor.moveToNext()) {
        int idx = cursor.getColumnIndex(TaskContract.TaskEntry.COL_TASK_TITLE);
        taskList.add(cursor.getString(idx));
    }

    if (mAdapter == null) {
        mAdapter = new ArrayAdapter<>(this,
                R.layout.item_todo,
                R.id.task_title,
                taskList);
        mTaskListView.setAdapter(mAdapter);
    } else {
        mAdapter.clear();
        mAdapter.addAll(taskList);
        mAdapter.notifyDataSetChanged();
    }

    cursor.close();
    db.close();
}

public void deleteTask(View view) {
    View parent = (View) view.getParent();
    TextView taskTextView = (TextView) parent.findViewById(R.id.task_title);
    String task = String.valueOf(taskTextView.getText());
    SQLiteDatabase db = mHelper.getWritableDatabase();
    db.delete(TaskContract.TaskEntry.TABLE,
            TaskContract.TaskEntry.COL_TASK_TITLE + " = ?",
            new String[]{task});
    db.close();
    updateUI();
}

}

Ved Sarkar
  • 347
  • 2
  • 8
  • 18

1 Answers1

0

Because You have to set a button that finish the intro and get you to the main activity. and you do not need to

 setContentView(R.layout.activity_main);

You have to put all this code in separate class other than main activity, otherwise you can not go there.

following is sample code from the library you mention

addSlide(new SimpleSlide.Builder()
                    .title(R.string.title_material_bold)
                    .description(R.string.description_material_bold)
                    .image(R.drawable.art_material_bold)
                    .background(R.color.color_material_bold)
                    .backgroundDark(R.color.color_dark_material_bold)
                    .scrollable(scrollable)
                    .buttonCtaLabel("finish")
                    .buttonCtaClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) 
                        {
                            Intent main=new Intent(MainIntro.this,MainActivity.class);
                            startActivity(main);
                        }
                    })
                    .build());

for more info refer this class

MainIntroActivity.java

skydroid
  • 733
  • 6
  • 16