1

у меня есть два действия, связанные с двумя кнопкамимножественный фильтр намерений к многократному активности

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 

    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 





    <activity 

     android:name=".Subactivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:taskAffinity="com.example.start_cs.sub"> 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 

    <activity 
     android:label="@string/app_name" 
     android:name=".sub" 

     > 
    </activity> 

    <activity 

     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" android:taskAffinity="com.example.start_cs.main" 
     > 

     <intent-filter> 

      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" />   </intent-filter> 


    </activity> 


    <activity 
     android:label="@string/app_name" 
     android:name=".main" 

     > 
    </activity> 


</application> 

MainActivity код

package com.example.start_cs.myapp; 




Button button; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.content_main); 
    addListenerOnButton(); 
} 

public void addListenerOnButton() { 

    final Context context = this; 

    button = (Button) findViewById(R.id.main_text_view); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, main.class); 
      startActivity(intent); 

     } 

    }); 

} 

код макета

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/main" 
    android:background="@drawable/main" 
    android:layout_centerHorizontal="true" 
    android:id="@+id/main_text_view" 


    android:layout_marginTop="17dp" 


    /> 

в этой ситуации

кнопка Subactivity открыта к югу

но MainActivity кнопка не открывал главный

, но если я ставлю MainActivity выше Subactivity

кнопка Subactivity не открывала суб

но кнопка MainActivity открыта main

+0

сообщение соответствующего кода. Файл манифеста недостаточен для управления действиями кнопки. Являются ли ваши кнопки частью вашего приложения, или вы говорите о пусковых установках в меню приложений Android? – rothloup

+0

кнопки являются частью моего приложения @rothloup –

+0

почта макет также, пожалуйста. – rothloup

ответ

1

ОК, на основе ваших ответов на мои комментарии, я думаю, все, что я могу сказать, это то, что вам нужно следовать учебному пособию о том, как создать приложение для Android. В Интернете есть отличные учебные пособия.

У вас есть два действия, поэтому у вас должно быть два файла макета. Вы только разместили один.

У вас также должно быть два исходных файла, по одному для каждого вида деятельности. Вы только разместили один.

Каждый элемент андроида в макете, который вы хотели бы ссылаться в коде, требует идентификатора. ваш код ссылается R.id.main_text_view, но в вашем файле макета нет такого идентификатора. Я удивлен, что ваш код даже компилируется.

Однако, чтобы ответить на ваш конкретный вопрос, что вам нужно следующее:

1) <name> теги в вашем файле манифеста должно совпадать с именем вашего исходников Java класс файлов для каждого из ваших действий. Таким образом, ваши файлы классов активности называются «MainActivity» и «Subactivity» в соответствии с вашим файлом манифеста. Однако см. Мой комментарий к вашему коду onClickListener ниже.

Кроме того, ваш манифест указывает, что обе вашей деятельности являются действиями «LAUNCHER». Тебе нужен только этот тег для действий, которые вы хотите запустить с панели запуска приложений Android (т. Е. Список всех приложений, установленных на вашем телефоне). Похоже, вы хотели бы этого только в своей основной деятельности, но вы могли бы указать более одного, если хотите.

2) Ваши действия являются дуальными друг от друга (то есть они звучат так, как будто они делают точно то же самое - каждая из них имеет кнопку, запускающую другую), поэтому код будет очень похожим. Ваш код MainActivity должен выглядеть примерно так:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.content_main); 
    addListenerOnButton(); 
} 

public void addListenerOnButton() { 

    final Context context = this; 

    button = (Button) findViewById(R.id.main_text_view); //<-- This tries to find a button in this activity (using the activity's layout file that was used in the call to setContentView() in onCreate(). However, the id you specify doesn't exist in your layout file. This should either not compile or return null. 

//This is fine. 
    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, main.class); //<--"main.class" doesn't match either of the activity names declared in your manifest. It should match one of the names declared in the <name> tag of one of your <activity> tags. 
      startActivity(intent); 

     } 

    }); 

} 

Ваш файл разметки должен содержать идентификатор для кнопки, которые хотели бы найти с помощью findViewById().Измените файл макета следующим образом (и создайте его для каждого вида деятельности, хотя технически вы можете ссылаться на один и тот же макет для каждого вида деятельности, но на данный момент концептуально проще иметь отдельные файлы).

<Button 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:src="@drawable/main" 
android:background="@drawable/main" 
android:layout_centerHorizontal="true" 
android:id="@+id/main_text_view" <!-- Here is the line that identifies the button for your app. The format is "@+id/some_name", and is reference as "R.id.some_name" in your code. --> 


android:layout_marginTop="17dp" 


/> 

Теперь вы должны сделать то же самое в вашем коде subactivity, но ваш onClickListener будем называть основным видом деятельности вместо вашего subactivity. Таким образом, код onClickListener выглядит следующим образом для MainActivity (который запускает свой subactivity):

button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, Subactivity.class); 
      startActivity(intent); 

     } 

    }); 

и как это в вашем subactivity (который запускает свою Основную активность)

button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, MainActivity.class); 
      startActivity(intent); 

     } 

    }); 
+0

спасибо за ваше время, но я должен сказать вам, что у меня есть все мои файлы, и это сработало очень хорошо, но проблема в том, как я могу использовать две кнопки одновременно, только одна кнопка работала хорошо, только если Я положил его первым из моего кода манифеста, как я сказал ранее, а другой не работал с проблемой только в коде манифеста. Я пробовал код, и он хорошо работал с первым фильтром цели, независимо от того, является ли это MainActivity или Mainsub @rothloup «У меня есть все мои xml и java-файлы " –

+0

@mmorsy манифест не является кодом. Он не определяет поведение ваших кнопок. Все, что он делает (в вашем случае), объявляет компоненты вашего приложения (действия, получатели, службы и т. Д.). Просто потому, что вы меняете порядок в манифесте, и вы получаете другое поведение, это не значит, что решение лежит в вашем манифесте. Если вы разместили все свои файлы, то вам не хватает большого количества кода и макета, которые необходимы для того, чтобы делать то, что вы описываете. Надеюсь, мой ответ поможет хотя бы указать вам в правильном направлении. – rothloup

+0

мои файлы http://pasted.co/5834e7be - http://pasted.co/8afb9f92 - http://pasted.co/b82bcf8a - http://pasted.co/75bbd1b0 - http://pasted.co/0b791d98 - http://pasted.co/bf2ec691 - http://pasted.co/26db9cad - http://pasted.co/8adef098 @rothloup –

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