Когда окно совместного доступа отменяется
Программа останавливается.
При совместном использовании откроется окно совместного доступа к тексту, и текст будет опубликован.
Но когда показывается окно общего доступа
Если дотронуться до кнопки «Назад», произойдет ошибка и выйдет приложение
введите описание изображения здесь
введите описание изображения здесь
Logcat
01-18 16:18:25.177 166-514/? E/BandwidthController: Updating quota globalAlert failed (No such file or directory)
--------- beginning of /dev/log/system
01-18 16:18:25.487 3157-3157/ir.hetbo.book_java E/dalvikvm: Could not find class 'android.support.v4.app.ActivityCompat$SharedElementCallback21Impl', referenced from method android.support.v4.app.ActivityCompat.setEnterSharedElementCallback
01-18 16:18:25.497 3157-3157/ir.hetbo.book_java E/dalvikvm: Could not find class 'android.support.v4.app.ActivityCompat$SharedElementCallback21Impl', referenced from method android.support.v4.app.ActivityCompat.setExitSharedElementCallback
01-18 16:18:26.807 3157-3157/ir.hetbo.book_java E/AndroidRuntime: FATAL EXCEPTION: main
Process: ir.hetbo.book_java, PID: 3157
java.lang.RuntimeException: Unable to resume activity {ir.hetbo.book_java/ir.hetbo.book_java.main}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2786)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2815)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5019)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2080)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:2106)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:683)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:637)
at ir.hetbo.book_java.main$1.onTabSelected(main.java:142)
at com.roughike.bottombar.BottomBar.setOnTabSelectListener(BottomBar.java:481)
at com.roughike.bottombar.BottomBar.setOnTabSelectListener(BottomBar.java:465)
at ir.hetbo.book_java.main.bottomtabs(main.java:137)
at ir.hetbo.book_java.main.onResume(main.java:87)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1209)
at android.app.Activity.performResume(Activity.java:5310)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2776)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2815)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5019)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
01-18 16:18:35.967 3205-3205/? E/memtrack: Couldn't load memtrack module (No such file or directory)
01-18 16:18:35.967 3205-3205/? E/android.os.Debug: failed to load memtrack module: -2
main.java
package ir.hetbo.book_java;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Parcelable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.FrameLayout;
import com.roughike.bottombar.BottomBar;
import com.roughike.bottombar.BottomBarTab;
import com.roughike.bottombar.OnTabSelectListener;
import java.io.IOException;
import ir.hetbo.book_java.database.DBOpenHelper;
import ir.hetbo.book_java.fragments.Contact;
import ir.hetbo.book_java.fragments.Favorite;
import ir.hetbo.book_java.fragments.Category;
import ir.hetbo.book_java.fragments.Recent;
import ir.hetbo.book_java.fragments.Setting;
public class main extends AppCompatActivity {
SharedPreferences sp;
BottomBar bar;
FrameLayout frame;
Category Category;
Contact contact;
Favorite favorite;
Recent recent;
@Override
protected void onCreate(Bundle savedInstanceState) {
sp = getSharedPreferences("prefs",Context.MODE_PRIVATE);
final boolean useDarkTheme = sp.getBoolean("dark2",false);
if (useDarkTheme)
setTheme(R.style.dark);
else {
setTheme(R.style.AppTheme);
SetColorPrimary();
}
SetColorAccent();
boolean screen = sp.getBoolean("screen",false);
if (screen)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
//if (Build.VERSION.SDK_INT >= 21) {
//getWindow().setNavigationBarColor(getResources().getColor(R.color.colorAccent2));
//getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccent2));
//}
super.onCreate(savedInstanceState);
//overridePendingTransition( R.anim.fadeout,R.anim.fadein);
setContentView(R.layout.main);
frame = findViewById(R.id.frame);
bar = findViewById(R.id.bottomBar);
bottomtabs(bar);
DBOpenHelper helper = new DBOpenHelper(this);
try {
helper.importDB();
}catch (IOException e){
}
}
@Override
protected void onResume() {
super.onResume();
bottomtabs(bar);
}
private void bottomtabs(BottomBar bar){
//انتخاب رنگ باتن بار در صورتی که تم مشکلی باشد یا نباشد
boolean useDarkTheme = sp.getBoolean("dark2",false);
if (useDarkTheme){
//رنگ باتن بار مشکی میشود
BottomBarTab tab1 = bar.getTabAtPosition(0);
tab1.setBarColorWhenSelected(Color.parseColor("#212121"));
BottomBarTab tab2 = bar.getTabAtPosition(1);
tab2.setBarColorWhenSelected(Color.parseColor("#212121"));
BottomBarTab tab3 = bar.getTabAtPosition(2);
tab3.setBarColorWhenSelected(Color.parseColor("#212121"));
BottomBarTab tab4 = bar.getTabAtPosition(3);
tab4.setBarColorWhenSelected(Color.parseColor("#212121"));
BottomBarTab tab5 = bar.getTabAtPosition(4);
tab5.setBarColorWhenSelected(Color.parseColor("#212121"));
}
else {
// رنگ باتن بار برای هر تب یک رنگ Set میشود
BottomBarTab tab1 = bar.getTabAtPosition(0);
tab1.setBarColorWhenSelected(Color.parseColor("#E91E63"));
BottomBarTab tab2 = bar.getTabAtPosition(1);
tab2.setBarColorWhenSelected(Color.parseColor("#FF9800"));
BottomBarTab tab3 = bar.getTabAtPosition(2);
tab3.setBarColorWhenSelected(Color.parseColor("#2196F3"));
BottomBarTab tab4 = bar.getTabAtPosition(3);
tab4.setBarColorWhenSelected(Color.parseColor("#009688"));
BottomBarTab tab5 = bar.getTabAtPosition(4);
tab5.setBarColorWhenSelected(Color.parseColor("#9c27b0"));
}
// ماندن در صفحه تنظیمات در صورتی که برنامه ریست شود.
final boolean settingapp = sp.getBoolean("Setting",false);
if (settingapp) {
bar.selectTabAtPosition(3);
sp.edit().putBoolean("Setting", false).apply();
}
//انتخاب تب پیش فرض
boolean selectTab = sp.getBoolean("selectTab",true);
if (selectTab) {
bar.selectTabAtPosition(2);//انتخاب تب
sp.edit().putBoolean("selectTab", false).apply();
}
bar.setAnimation(null);
bar.setOnTabSelectListener(new OnTabSelectListener() {
@Override
public void onTabSelected(int tabId) {
switch (tabId) {
case R.id.tab_recent:
getSupportFragmentManager().beginTransaction().replace(R.id.frame,new Recent()).commit(); break;
case R.id.tab_favorite:
getSupportFragmentManager().beginTransaction().replace(R.id.frame,new Favorite()).commit();
break;
case R.id.tab_list:
getSupportFragmentManager().beginTransaction().replace(R.id.frame,new Category()).commit();
break;
case R.id.tab_setting:
getSupportFragmentManager().beginTransaction().replace(R.id.frame,new Setting()).commit();
break;
case R.id.tab_contact:
getSupportFragmentManager().beginTransaction().replace(R.id.frame,new Contact()).commit();
break;
}
}});
}
private void SetColorPrimary(){
String ColorPrimary = sp.getString("ColorPrimary","md_orange_500");
switch(ColorPrimary){
case "md_red_500":
getTheme().applyStyle(R.style.OverlayColorPrimary__md_red_500, true);
break;
case "md_pink_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_pink_500, true);
break;
case "md_purple_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_purple_500, true);
break;
case "md_deep_purple_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_deep_purple_500, true);
break;
case "md_indigo_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_indigo_500, true);
break;
case "md_blue_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_blue_500, true);
break;
case "md_light_blue_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_light_blue_500, true);
break;
case "md_cyan_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_cyan_500, true);
break;
case "md_teal_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_teal_500, true);
break;
case "md_green_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_green_500, true);
break;
case "md_light_green_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_light_green_500, true);
break;
case "md_lime_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_lime_500, true);
break;
case "md_yellow_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_yellow_500, true);
break;
case "md_amber_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_amber_500, true);
break;
case "md_orange_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_orange_500, true);
break;
case "md_deep_orange_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_deep_orange_500, true);
break;
case "md_brown_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_brown_500, true);
break;
case "md_grey_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_grey_500, true);
break;
case "md_blue_grey_500":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_blue_grey_500, true);
break;
case "md_white":
getTheme().applyStyle(R.style.OverlayColorPrimary_md_white, true);
break;
}
}
private void SetColorAccent(){
String colorAccent = sp.getString("colorAccent","md_orange_500");
switch(colorAccent){
case "md_red_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_red_500, true);
break;
case "md_pink_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_pink_500, true);
break;
case "md_purple_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_purple_500, true);
break;
case "md_deep_purple_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_deep_purple_500, true);
break;
case "md_indigo_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_indigo_500, true);
break;
case "md_blue_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_blue_500, true);
break;
case "md_light_blue_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_light_blue_500, true);
break;
case "md_cyan_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_cyan_500, true);
break;
case "md_teal_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_teal_500, true);
break;
case "md_green_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_green_500, true);
break;
case "md_light_green_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_light_green_500, true);
break;
case "md_lime_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_lime_500, true);
break;
case "md_yellow_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_yellow_500, true);
break;
case "md_amber_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_amber_500, true);
break;
case "md_orange_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_orange_500, true);
break;
case "md_deep_orange_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_deep_orange_500, true);
break;
case "md_brown_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_brown_500, true);
break;
case "md_grey_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_grey_500, true);
break;
case "md_blue_grey_500":
getTheme().applyStyle(R.style.OverlayColorAccent_md_blue_grey_500, true);
break;
case "md_white":
getTheme().applyStyle(R.style.OverlayColorAccent_md_white, true);
break;
}
}
}
Recent.java
package ir.hetbo.book_java.fragments;
import android.content.Intent;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.AppCompatImageView;
import android.support.v7.widget.AppCompatTextView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import ir.hetbo.book_java.R;
import ir.hetbo.book_java.StoryClass;
import ir.hetbo.book_java.database.DBOpenHelper;
/**
* A simple {@link Fragment} subclass.
*/
public class Recent extends Fragment {
SharedPreferences preferences;
int id;
AppCompatTextView category;
AppCompatTextView title;
AppCompatTextView story;
AppCompatImageView star;
AppCompatImageView share;
LinearLayout bar;
AppCompatTextView nr;
View v;
public Recent() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
v = inflater.inflate(R.layout.fragment_recent, container, false);
return v;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
category = getActivity().findViewById(R.id.dast);
title = getActivity().findViewById(R.id.title);
story = getActivity().findViewById(R.id.story);
star = getActivity().findViewById(R.id.star);
share = getActivity().findViewById(R.id.share);
bar = getActivity().findViewById(R.id.bar);
nr = getActivity().findViewById(R.id.norecent);preferences = getContext().getSharedPreferences("prefs",Context.MODE_PRIVATE);
id = preferences.getInt("RecentID",0);
if (id == 0){
nr.setVisibility(View.VISIBLE);
bar.setVisibility(View.INVISIBLE);
title.setVisibility(View.INVISIBLE);
return;
}
final StoryClass sc = new StoryClass(0,"",0,0,"");
final DBOpenHelper helper = new DBOpenHelper(getContext());
helper.open();
Cursor c = helper.getStroy(id);
if (c.moveToFirst()){
int sId = c.getInt(0);
String stitle = c.getString(1);
int scategory = c.getInt(2);
int sFav = c.getInt(3);
String sStory = c.getString(4);
category.setText(String.valueOf(scategory));
title.setText(stitle);
story.setText(sStory);
star.setImageResource(sFav == 1 ? R.drawable.star2 : R.drawable.star_outline2);
sc.setId(sId);
sc.setFavorite(sFav);
sc.setStory(sStory);
sc.setCategory(scategory);
sc.setTitle(stitle);
}
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT,sc.getStory());
startActivity(Intent.createChooser(share,"اشتراک گذاری با..."));
}
});
star.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
helper.open();
star.setImageResource(sc.getFavorite() == 0 ? R.drawable.star2 : R.drawable.star_outline2);
helper.setFav(id,sc.getFavorite() == 1 ? 0 : 1);
helper.close();
sc.setFavorite(sc.getFavorite()== 1 ? 0 : 1);
helper.close();
}
});
int f = preferences.getInt("font",1);
int s = preferences.getInt("size",15);
title.setTextSize(s+5);
story.setTextSize(s);
category.setTextSize(15);
Typeface t1 = Typeface.createFromAsset(getActivity().getAssets(), "homa.ttf");
Typeface t2 = Typeface.createFromAsset(getActivity().getAssets(), "koodak.ttf");
Typeface t3 = Typeface.createFromAsset(getActivity().getAssets(), "nazanin.ttf");
Typeface t4 = Typeface.createFromAsset(getActivity().getAssets(), "titr.ttf");
Typeface t5 = Typeface.createFromAsset(getActivity().getAssets(), "iransans.ttf");
Typeface[] t = {t1,t2,t3,t4,t5};
title.setTypeface(t[f-1]);
story.setTypeface(t[f-1]);
category.setTypeface(t[f-1]);
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ir.hetbo.book_java">
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="false"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:screenOrientation="portrait"
android:theme="@style/dark">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".main"
android:screenOrientation="portrait"/>
<activity android:name=".ReadStory"
android:screenOrientation="portrait"></activity>
</application>
</manifest>