setcontentview () не работает для активности - PullRequest
1 голос
/ 10 апреля 2011

В моем приложении у меня есть приемник и активность.

Всякий раз, когда выполняется исходящий вызов, получатель широковещания получает и отправляет намерение в действие. Я начинаю эту деятельность с приемника. Когда я звоню, это действие начинается, но в этом действии не настроено представление. Я использую setContentView().

CallReciever.java

public class CallReceiver extends BroadcastReceiver
{     @Override
public void onReceive(Context context, Intent intent)
{


String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Bundle bundle1 = new Bundle();
bundle1.putString("phone_number", phoneNumber);
Intent intent1 = new Intent();
intent1.setClass(context, NewActivity.class);
intent1.putExtras(bundle1);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent1.setAction("NewActivity");
intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent1);

NewActivity.java

public class NewActivity extends Activity {
@Override
 public void onNewIntent(Intent intent){
    super.onNewIntent(intent);
    Bundle bundle = getIntent().getExtras();
    String phoneNumber =  bundle.getString("phone_number");
  setContentView(R.layout.temp);

     <activity android:name=".NewActivity"
     android:launchMode="singleTop"
     android:label="@string/app_name1">

     <intent-filter>
     <action android:name="NewActivity"/>
     </intent-filter>

@Override
public void onCreate(Bundle savedInstanceState) {
Bundle bundle = getIntent().getExtras();
String phoneNumber =  bundle.getString("phone_number");

 setContentView(R.layout.temp);
}   }

Я также переопределил метод onCreate. Теперь я получаю диалог ForceClose. Что мне делать ??

Относительно компоновки. Я использую обычную линейную компоновку и просмотр текста.

Ответы [ 2 ]

3 голосов
/ 18 апреля 2016

Вы неправильно изменили метод onCreate() для NewActivity.Вы должны написать свой NewActivity следующим образом:

public class NewActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.temp);
        Bundle bundle = getIntent().getExtras();
        String phoneNumber =  bundle.getString("phone_number");

    }
}

Более того, даже если представление не отображается должным образом, я прошу вас проверить файл R должным образом, а также файл temp.xml в дизайне.Я надеюсь, что это решит вашу проблему.

0 голосов
/ 10 апреля 2011

Я полагаю, вы не переопределили onCreate в вашем NewActivity

onNewIntent вызывается только в случае RE_LAUNCH. Впервые onCreate называется.

Проверьте документацию для onNewIntent .

Просто переопределите onCreate и получите намерение, дополнительные данные, настройку макета и т. Д. (Очень похоже на ваш onNewIntent)

...