繁体   English   中英

我的应用程序在最初启动到设备时会加载,但是退出应用程序并返回后,它甚至不会尝试启动

[英]My app loads when initially launched to the device, but after I exit the app, and go back in, it won't even try to launch

好的,所以我真的是Android的新手,为了开始工作,我付了一个开发人员来为我构建一个简单的应用程序,现在我正尝试通过它来理解它。

我要解决的问题是应用程序转到的初始启动屏幕。 通过进入Android清单文件并更改此值,我对此进行了更改:

 <activity android:label="@string/app_name" android:name="Home">

达到这个值:

 <activity android:label="@string/app_name" android:name="Languages">

当我将应用程序部署到设备上时,它会很好地加载Languages类! 问题是,当我离开应用程序然后尝试重新进入时,它甚至没有尝试启动该应用程序,而是返回主屏幕。

没有任何信息可以告诉我发生了什么,并且在应用程序最初关闭后附加调试器也无法正常工作。

是否有人对可能发生的事情有任何想法?

这是来自Android Manifest文件的代码:

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:label="@string/app_name" android:name="Language">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />

        </intent-filter>
    </activity>
    <activity android:name="About"></activity>
    <activity android:theme="@android:style/Theme.Light" android:name="Language"></activity>
    <activity android:name="Volume" android:theme="@android:style/Theme.Light"></activity>
    <activity android:name="Book" android:theme="@android:style/Theme.Light"></activity>
    <activity android:name="Chapter" android:theme="@android:style/Theme.Light"></activity>
    <activity android:name="Verse" android:theme="@android:style/Theme.NoTitleBar"></activity>
    <activity android:name="Settings"></activity>

</application>

`

这是最初启动的Home类的代码:package com.elan.reader;

   import android.app.Activity;
   import android.content.Intent;
   import android.os.Bundle;
   import android.os.Looper;
   import android.view.View;
   import android.widget.Button;
   import android.widget.ProgressBar;
   import android.widget.TextView;

   import com.elan.reader.util.DatabaseHelper;
   import com.elan.reader.util.DatabaseHelper_Spa;

    public class Home extends Activity implements View.OnClickListener{
/** Called when the activity is first created. */
Button aboutBtn,readBtn;
Home me;
DatabaseHelper myDatabaseAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    me=this;

    aboutBtn = (Button) findViewById(R.id.about);
    aboutBtn.setFocusable(true);
    aboutBtn.setOnClickListener(this);

    readBtn = (Button) findViewById(R.id.read);
    readBtn.setFocusable(true);
    readBtn.setOnClickListener(this);
    myDatabaseAdapter = DatabaseHelper.getInstance(me);
    if(!myDatabaseAdapter.databaseReady()){
        try{
            myDatabaseAdapter.copyDatabase2();
            DatabaseHelper_Spa myDatabaseAdapter_spa = DatabaseHelper_Spa.getInstance(me);
            myDatabaseAdapter_spa.copyDatabaseSpanish2();

        }catch(Exception e){
            e.printStackTrace();
        }
        myDatabaseAdapter.databaseReady();
    }else{
        //myDatabaseAdapter.close();

        if(myDatabaseAdapter.getSaveVerse()[0]!=null||!myDatabaseAdapter.getSaveVerse()[0].equals("")){
            String data[]=myDatabaseAdapter.getSaveVerse();
            Intent intent=new Intent(Home.this,  Verse.class);
            intent.putExtra("language",data[0]);
            intent.putExtra("volume_id",data[1]);
            intent.putExtra("chapter",data[2]);
            intent.putExtra("book",data[3]);
            intent.putExtra("book_id",data[4]);
            intent.putExtra("multiple_languages",false);
            startActivity(intent);

        }
    }
}
@Override
public void onClick (View view){
    if(view==aboutBtn){
        startActivity(new Intent(Home.this,  About.class));
    }else if(view==readBtn){
        ProgressBar seek = (ProgressBar) findViewById(R.id.seek);
        seek.setVisibility(View.VISIBLE);
        TextView msg = (TextView) findViewById(R.id.loading);
        msg.setVisibility(View.VISIBLE);
        new Thread(){
            public void run(){
                Looper.prepare();

                    if(myDatabaseAdapter.getSaveVerse()[0]==null||myDatabaseAdapter.getSaveVerse()[0].equals("")){
                        startActivity(new Intent(Home.this,  Language.class));
                    }else{
                        String data[]=myDatabaseAdapter.getSaveVerse();
                        Intent intent=new Intent(Home.this,  Verse.class);
                        intent.putExtra("language",data[0]);
                        intent.putExtra("volume_id",data[1]);
                        intent.putExtra("chapter",data[2]);
                        intent.putExtra("book",data[3]);
                        intent.putExtra("book_id",data[4]);
                        intent.putExtra("multiple_languages",false);
                        startActivity(intent);

                    }

                Looper.loop();
            }
        }.start();

    }
}

}`

这是我需要首先启动的新类的代码:package com.elan.reader;

  import java.util.ArrayList;

  import com.elan.reader.util.DatabaseHelper;
  import com.elan.reader.util.DatabaseHelper_Spa;

  import android.app.ListActivity;
  import android.content.Context;
  import android.content.Intent;
  import android.graphics.BitmapFactory;
  import android.os.Bundle;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.ArrayAdapter;
  import android.widget.Chronometer;
  import android.widget.ImageView;
  import android.widget.ListView;
  import android.widget.TextView;


   public class Language extends ListActivity {

 /** Called when the activity is first created. */
private ArrayList<SettingsObject> m_orders = null;
    private AboutAdapter m_adapter;
    private Runnable viewOrders;
    String[] listData={"English","French"};
    //Bitmap[] listImage;
    private Runnable returnRes = new Runnable() {
    @Override
   public void run() {

       if(m_orders != null && m_orders.size() > 0){
           m_adapter.notifyDataSetChanged();
           for(int i=0;i<m_orders.size();i++)
           m_adapter.add(m_orders.get(i));
       }
       m_adapter.notifyDataSetChanged();
   }
 };
    ImageView backBtn;
static boolean running=false;
static long startTime=0;
static Chronometer timer ;
static long  hit_id=-1;
static int stopped=0;
Context me;
   @Override
   public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.title_list_menu);
   me=this;

   DatabaseHelper myDatabaseAdapter;
    myDatabaseAdapter = DatabaseHelper.getInstance(me);
    if(!myDatabaseAdapter.databaseReady()){
        try{
            myDatabaseAdapter.copyDatabase2();
            DatabaseHelper_Spa myDatabaseAdapter_spa =        DatabaseHelper_Spa.getInstance(me);
            myDatabaseAdapter_spa.copyDatabaseSpanish2();

        }catch(Exception e){
            e.printStackTrace();
        }
        myDatabaseAdapter.databaseReady();
    }else{
        //myDatabaseAdapter.close();

        if(myDatabaseAdapter.getSaveVerse()[0]!=null||!myDatabaseAdapter.getSaveVerse()[0].equals("")){
            String data[]=myDatabaseAdapter.getSaveVerse();
           Intent intent=new Intent(Language.this,  Verse.class);
        intent.putExtra("language",data[0]);
        intent.putExtra("volume_id",data[1]);
        intent.putExtra("chapter",data[2]);
        intent.putExtra("book",data[3]);
        intent.putExtra("book_id",data[4]);
        intent.putExtra("multiple_languages",false);
            startActivity(intent);

        }
    }

  // listImage=new Bitmap[]{BitmapFactory.decodeResource(getResources(), R.drawable.sharing),BitmapFactory.decodeResource(getResources(), R.drawable.contact_us),BitmapFactory.decodeResource(getResources(), R.drawable.about)};
   m_orders = new ArrayList<SettingsObject>();
   this.m_adapter = new AboutAdapter(this, R.layout.language_row, m_orders);
   setListAdapter(this.m_adapter);
   viewOrders = new Runnable(){
       @Override
       public void run() {
           getOrders();
       }
   };

   Thread thread =  new Thread(null, viewOrders, "MagentoBackground");
   thread.start();

}

    @Override
protected void onListItemClick(ListView li, View v, int position, long id) {
    super.onListItemClick(li, v, position, id);
    Intent intent=new Intent(Language.this,  Volume.class);
    intent.putExtra("language",""+position);

    startActivity(intent);


   }


@Override
protected void onRestart() {
    // TODO Auto-generated method stub
    super.onRestart();
    System.out.println("onRestart");
    //loadImages();

  }

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    System.out.println(" onResume");

}

@Override
protected void onStart() {
    // TODO Auto-generated method stub
    super.onStart();
    System.out.println("onStart");
}
private class AboutAdapter extends ArrayAdapter<SettingsObject> {

   private ArrayList<SettingsObject> items;

   public AboutAdapter(Context context, int textViewResourceId, ArrayList<SettingsObject> items) {
           super(context, textViewResourceId, items);
           this.items = items;
   }

   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
           View v = convertView;
           if (v == null) {
               LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
               v = vi.inflate(R.layout.language_row, null);
           }

           final SettingsObject o = items.get(position);
           if (o != null) {
                   TextView title = (TextView) v.findViewById(R.id.title);
                   if (title != null) {
                    title.setText(o.getName());                            
                   }

           }
           return v;
   }
}
private void getOrders(){
   try{

       m_orders = new ArrayList<SettingsObject>();
       for(int i=0;i<listData.length;i++){
        SettingsObject temp = new SettingsObject(listData[i]);
         m_orders.add(temp);
       }
     } catch (Exception e) { 
      e.printStackTrace();
     }
     runOnUiThread(returnRes);
 }
  class SettingsObject {

    private String name;

    public String getName() {
        return name;
    }
    public SettingsObject(String name) {
        this.name = name;
    }

}

}`

在设置>>开发人员选项>>选择要调试的应用程序中,您可能应该将其更改为无应用程序,因为只有在您的设备上连接了eclipse调试器时,该应用程序才能启动。 如果将其更改为“无应用程序”,则可以在任何时候启动该应用程序。 希望对您有所帮助。 :)

尝试在代码的不同部分中添加Log.d输出,以跟踪正在执行和未执行的内容。

myDatabaseAdapter.databaseReady();是什么? 做? 为什么会有以下代码?

if(!myDatabaseAdapter.databaseReady()) {
    // try catch bock
    myDatabaseAdapter.databaseReady();
}

startActivity(intent);是什么? 在相同的if块的else部分中做else

不知道这是否是造成问题的原因,但是在AndroidManifest.xml中,您有2个针对Language的活动条目。 您应该删除第二个条目。

<activity android:theme="@android:style/Theme.Light" android:name="Language"></activity>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM